2016-12-05 6 views
-2

Почему я не могу проверить этот случай?Как исправить код для проверки корпуса JUnit и POI?

@Test 
public void test_Should_be_0() throws Exception { 

    HSSFCell cell = new HSSFWorkbook().createSheet().createRow(0).createCell(0); 
    cell.setCellValue(0); 

    assertTrue(cell == 0); 

Благодарим за помощь.

+2

как он скомпилирован, вы пытаетесь сравнить ссылку с '0', которая не может работать точно. –

+0

@NicolasFilotto: спасибо за быстрый ответ, но когда я написал cell.setCellValue (0); Разве я не добавил значение в ячейку? –

+0

Да, но это не то, что вы на самом деле проверяете, проверьте мой ответ для получения более подробной информации. –

ответ

1

Ваш тест assertTrue(cell == 0) не является правильным, на самом деле вы пытаетесь сравнить ссылку объекта с 0, которые не могут работать, поскольку они несовместимы типы, если вы хотите проверить, является ли значение ячейки 0, вы скорее должны сделать что-то вроде что:

assertEquals(0.0, cell.getNumericCellValue(), 0.0); 
+0

Знаете ли вы какую-либо книгу, чтобы понять, как тестировать ячейки или проект POI? –

+0

Ничего из того, что я не –

+0

Что-то не так, если я pone: 'assertEquals (1, cell.getNumericCellValue(), 3);' тест работает правильно снова, но это ложь! –

0

Я думаю, что это один из способов проверить код:

1)

@Test 
    public void test_Should_be_0() throws Exception { 

     HSSFCell cell = new HSSFWorkbook().createSheet().createRow(0).createCell(0); 
     cell.setCellValue(0); 
     Assert.assertTrue(cell.getNumericCellValue() == 0); 

или 2)

@Test 
    public void test_Should_be_0() throws Exception { 

     HSSFCell cell = new HSSFWorkbook().createSheet().createRow(0).createCell(0); 
     cell.setCellValue(0); 
     HSSFCell cell2 = new HSSFWorkbook().createSheet().createRow(0).createCell(0); 
     cell2.setCellValue(0); 
     Assert.assertTrue(cell.getNumericCellValue() == cell2.getNumericCellValue()); 

Потому что, если числа отличаются тест не работает.

+0

Второй пример - плохая идея. Если вы пытаетесь протестировать 'setCellValue()' или 'getNumericCellValue()', а один - плохой, он всегда будет работать так же, как и тот же ввод. Поэтому, если 'cell.setCellValue (0)' помещает '9999' в ячейку,' assertTrue (cell.getNumericCellValue() == 0) 'должен терпеть неудачу, потому что он должен вернуть' 9999'. Но если вы установите значение двух ячеек witn 'setCellValue (0)', а затем используйте 'getNumericCellValue()' для сравнения результатов, они должны быть равны, и ваше утверждение в тесте 2 всегда будет проходить, даже если функция плохая. – jmarkmurphy

 Смежные вопросы

  • Нет связанных вопросов^_^