140 votes

Quelle est l'utilisation réelle de "fail" dans un scénario de test JUnit ?

Quelle est l'utilisation réelle de "fail" dans un scénario de test JUnit ?

160voto

sleske Points 29978

Quelques cas où je l'ai trouvé utile :

  • marquer un test qui est incomplet, de sorte qu'il échoue et vous avertit jusqu'à ce que vous puissiez le terminer
  • en s'assurant qu'une exception est levée :
try{
  // do stuff...
  fail("Exception not thrown");
}catch(Exception e){
  assertTrue(e.hasSomeFlag());
}

Note :

Depuis JUnit4, il existe un moyen plus élégant de tester qu'une exception est levée : Utilisez l'annotation @Test(expected=IndexOutOfBoundsException.class)

Cependant, cela ne fonctionnera pas si vous voulez également inspecter l'exception, alors vous avez toujours besoin de fail() .

19voto

kartheek Points 505

Disons que vous écrivez un scénario de test pour un flux négatif où le code testé doit lever une exception.

try{
   bizMethod(badData);
   fail(); // FAIL when no exception is thrown
} catch (BizException e) {
   assert(e.errorCode == THE_ERROR_CODE_U_R_LOOKING_FOR)
}

12voto

philant Points 17345

Je pense que le cas d'utilisation habituel est de l'appeler lorsqu'aucune exception n'a été levée dans un test négatif.

Quelque chose comme le pseudo-code suivant :

test_addNilThrowsNullPointerException()
{
    try {
        foo.add(NIL);                      // we expect a NullPointerException here
        fail("No NullPointerException");   // cause the test to fail if we reach this            
     } catch (NullNullPointerException e) {
        // OK got the expected exception
    }
}

9voto

rgdayo Points 41

Je l'ai utilisé dans le cas où quelque chose aurait pu mal tourner dans ma méthode @Before.

public Object obj;

@Before
public void setUp() {
    // Do some set up
    obj = new Object();
}

@Test
public void testObjectManipulation() {
    if(obj == null) {
        fail("obj should not be null");
     }

    // Do some other valuable testing
}

4voto

Alen Siljak Points 307

Moi, par exemple, j'utilise fail() pour indiquer les tests qui ne sont pas encore terminés (cela arrive) ; sinon, ils seraient affichés comme réussis.

Cela est peut-être dû au fait que je ne suis pas au courant d'une sorte de fonctionnalité incomplète(), qui existe dans NUnit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X