2016-12-05 1 views
-2

Warum kann ich diesen Fall nicht erfolgreich testen?Wie behebe ich den Code, um den Fall nach JUnit und POI zu testen?

@Test 
public void test_Should_be_0() throws Exception { 

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

    assertTrue(cell == 0); 

Vielen Dank für Ihre Hilfe.

+2

Wie kompiliert es überhaupt, Sie versuchen, eine Referenz mit "0" zu vergleichen, die nicht sicher funktionieren kann. –

+0

@NicolasFilotto: danke für die schnelle Antwort, aber wenn ich schrieb cell.setCellValue (0); Habe ich den Wert nicht in die Zelle gesetzt? –

+0

ja, aber es ist nicht das, was Sie wirklich testen, überprüfen Sie meine Antwort für weitere Details –

Antwort

1

Ihr Test assertTrue(cell == 0) nicht richtig ist, in der Tat Sie versuchen, eine Objektreferenz mit 0 zu vergleichen, die, da sie inkompatible Typen sind, können nicht funktionieren, wenn Sie, ob der Wert der Zelle 0 überprüfen möchten, sollten Sie lieber etwas tun, wie dass:

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

Kennen Sie ein Buch, um zu verstehen, wie man POI-Zellen oder -Projekte testet? –

+0

Nein sorry ich nicht –

+0

Es ist etwas falsch, wenn ich pone: 'assertEquals (1, cell.getNumericCellValue(), 3);' Der Test funktioniert wieder richtig, aber das ist falsch! –

0

ich denke, das ein Weg, um den Code zu testen:

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); 

oder 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()); 

Denn wenn die Zahlen unterschiedlich die Prüfung sind nicht funktioniert.

+0

Das zweite Beispiel ist eine schlechte Idee. Wenn Sie versuchen, 'setCellValue()' oder 'getNumericCellValue()' zu testen, und eines ist schlecht, wird es bei gleicher Eingabe immer auf die gleiche Weise fehlschlagen. Wenn 'cell.setCellValue (0)' also '9999' in die Zelle schreibt, sollte 'assertTrue (cell.getNumericCellValue() == 0)' fehlschlagen, weil es' 9999' zurückgeben soll. Wenn Sie jedoch den Wert von zwei Zellen mit 'setCellValue (0)' setzen und dann 'getNumericCellValue()' verwenden, um die Ergebnisse zu vergleichen, sollten sie gleich sein und Ihre Assert in Test 2 wird immer übergeben, auch wenn die Funktion schlecht ist. – jmarkmurphy

Verwandte Themen