Как написать тест на метод использующий Apache Poi?

Рейтинг: -1Ответов: 1Опубликовано: 14.08.2023

Я использую библиотеку Apache Poi, в тестировании я новичок поэтому сломала голову какие утверждения использовать для этого метода, моя программа собирает уникальные значения из файла excel и создает файлы excel в соответствии с количеством уникальных значений с сгруппированными уникальными значениями из исходного файла, подскажите как можно было бы написать тест?

  private void writeWorkBooks() throws FileNotFoundException {

    XSSFWorkbook book;

    for (String s : uniqueValues) {
        book = new XSSFWorkbook();
        XSSFRow nr;
        XSSFRow oldrow;

        int count = 0;
        for (int i = 0; i < this.workbook.getNumberOfSheets(); i++) {
            XSSFSheet newsheet = this.workbook.getSheetAt(i);
            XSSFSheet shnewbook = book.createSheet(newsheet.getSheetName());
            Iterator<Row> newrow = newsheet.rowIterator();
            while (newrow.hasNext()) {
                Row newr = (Row) newrow.next();
                oldrow = newsheet.getRow(newr.getRowNum());

                if (newr.getCell(2) != null) {
                    if (newr.getRowNum() >= 8 && !newr.getCell(2).getStringCellValue().trim().equals(s)) {
                        continue;
                    }
                }
                nr = shnewbook.createRow(count);
                count++;
                Iterator<Cell> newcell = newr.cellIterator();
                while (newcell.hasNext()) {
                    Cell newc = newcell.next();


                    if (newc != null) {

                        XSSFCell xssfCell = nr.createCell(newc.getColumnIndex());
                        XSSFCell hssfCell = oldrow.getCell(newc.getColumnIndex());

                        CellStyle nstyle = book.createCellStyle();
                        nstyle.cloneStyleFrom(newc.getCellStyle());
                        xssfCell.setCellStyle(nstyle);

                        if (hssfCell != null) {
                            switch (hssfCell.getCellType()) {
                                case BOOLEAN:
                                    xssfCell.setCellValue(hssfCell.getBooleanCellValue());
                                    break;
                                case NUMERIC:

                                    if (DateUtil.isCellDateFormatted(hssfCell)) {
                                        xssfCell.setCellValue(hssfCell.getDateCellValue());
                                    } else {

                                        xssfCell.setCellValue(hssfCell.getNumericCellValue());
                                    }
                                    break;
                                case STRING:
                                    xssfCell.setCellValue(hssfCell.getStringCellValue());
                                    break;
                                case FORMULA:
                                    xssfCell.setCellFormula(hssfCell.getCellFormula());
                                    break;
                                case BLANK:
                                    xssfCell.setBlank();
                                    break;
                                default:
                                    break;


                            }
                        }


                    }
                }

            }

        }

        String fileNewName = s.toString() + "_new_" + ".xlsx";
        try {
            FileOutputStream out = new FileOutputStream(fileNewName);
            book.write(out);
            out.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }

}

Ответы

▲ 0

Для написания теста у вас должно быть два файла для сравнения -- ожидаемый и сгенерированный.

А в самих ассертах можно попробовать применить библиотеку https://github.com/tobyweston/simple-excel/

Для простых файлов вполне работает.