2016-12-05 1 views
-2

Pourquoi je ne peux pas réussir à tester ce cas?Comment réparer le code pour tester le cas par JUnit et 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); 

Nous vous remercions de votre aide.

+2

comment compile-t-il même, vous essayez de comparer une référence avec '0', qui ne peut pas fonctionner à coup sûr. –

+0

@NicolasFilotto: merci pour la réponse rapide, mais quand j'ai écrit cell.setCellValue (0); N'ai-je pas mis la valeur dans la cellule? –

+0

oui mais ce n'est pas ce que vous testez réellement, vérifiez ma réponse pour plus de détails –

Répondre

1

Votre test assertTrue(cell == 0) n'est pas correct, en effet vous essayez de comparer avec 0 de référence d'un objet qui ne peut pas fonctionner comme ils sont des types incompatibles, si vous voulez vérifier si la valeur de la cellule est 0, vous devriez plutôt faire quelque chose comme que:

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

connaissez-vous un livre pour comprendre comment tester les cellules ou le projet POI? –

+0

Non désolé je ne sais pas –

+0

Quelque chose ne va pas, si je pone: 'assertEquals (1, cell.getNumericCellValue(), 3);' le test fonctionne correctement à nouveau, mais c'est faux! –

0

Je pense que ce une façon de tester le code:

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

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

Parce que si les chiffres sont différents du test ne fonctionne pas.

+0

Le deuxième exemple est une mauvaise idée. Si vous essayez de tester 'setCellValue()' ou 'getNumericCellValue()' et que l'un est mauvais, il échouera toujours de la même façon avec la même entrée. Donc si 'cell.setCellValue (0)' place un '9999' dans la cellule,' assertTrue (cell.getNumericCellValue() == 0) 'devrait échouer car il devrait retourner un '9999'. Mais si vous définissez la valeur de deux cellules avec 'setCellValue (0)' puis utilisez 'getNumericCellValue()' pour comparer les résultats, elles doivent être égales et votre affirmation dans le test 2 passera toujours, même si la fonction est mauvaise. – jmarkmurphy