J'ai écrit un test Junit pour tester à l'unité mon code. Je veux que mon scénario de test Junit échoue lorsque j'obtiens une exception dans mon code. J'ai essayé d'utiliser une instruction assert, mais même lorsque j'obtiens une exception dans mon code, mon scénario de test Junit passe. S'il vous plaît, quelqu'un peut-il me dire comment je peux y parvenir? Merci.
Vous pouvez affirmer qu'une variable globale "excepted" = null ou quelque chose comme ça et l'initialiser pour égaler une chaîne d'informations dans le bloc catch.
Je vous recommande fortement de ne tester que vos fonctionnalités. Si une exception est levée, le test échoue automatiquement. Si aucune exception n'est levée, vos tests deviendront tous verts.
Mais si vous voulez toujours écrire le code de test qui devrait échouer en cas d'exceptions, faites quelque chose comme: -
@Test
public void foo(){
try{
//execute code that you expect not to throw Exceptions.
}
catch(Exception e){
fail("Should not have thrown any exception");
}
}
En fait, votre test devrait échouer lorsqu'une exception dans le code est levée. Bien sûr, si vous interceptez cette exception et que vous ne la lancez pas (ou toute autre exception) plus loin, test ne le saura pas. Dans ce cas, vous devez vérifier le résultat de l'exécution de la méthode. Exemple de test:
@Test
public void test(){
testClass.test();
}
Méthode qui échouera au test:
public void test(){
throw new RuntimeException();
}
Méthode qui n'échouera pas au test
public void test(){
try{
throw new RuntimeException();
} catch(Exception e){
//log
}
}
Les deux tests suivants échoueront sans codage supplémentaire:
@Test
public void fail1() {
throw new NullPointerException("Will fail");
}
@Test
public void fail2() throw IOException {
throw new IOException("Will fail");
}
Dans JUnit 4, vous pouvez explicitement affirmer qu'un @Test doit échouer avec une exception donnée en utilisant la propriété expected
de @Test
annotation:
@Test(expected = NullPointerException.class)
public void expectNPE {
String s = null;
s.toString();
}
Voir documentation JUnit4 dessus .