J'ai une méthode simple Java
, je voudrais vérifier qu'elle ne jette aucune exceptions
.
Je me suis déjà moqué des paramètres, etc. Cependant, je ne sais pas comment utiliser Mockito
pour vérifier qu'aucune exception n'a été levée à partir de la méthode
Code de test actuel:
@Test
public void testGetBalanceForPerson() {
//creating mock person
Person person1 = mock(Person.class);
when(person1.getId()).thenReturn("mockedId");
//calling method under test
myClass.getBalanceForPerson(person1);
//How to check that an exception isn't thrown?
}
Échec du test si une exception est interceptée.
@Test
public void testGetBalanceForPerson() {
//creating mock person
Person person1 = mock(Person.class);
when(person1.getId()).thenReturn("mockedId");
//calling method under test
try{
myClass.getBalanceForPerson(person1);
}
catch(Exception e){
fail("Should not have thrown any exception");
}
}
Tant que vous n'indiquez pas explicitement que vous attendez une exception, JUnit échouera automatiquement à tous les tests ayant généré des exceptions non capturées.
Par exemple, le test suivant échouera:
@Test
public void exampleTest(){
throw new RuntimeException();
}
Si vous souhaitez également vérifier que le test échouera sur Exception, vous pouvez simplement ajouter un throw new RuntimeException();
dans la méthode que vous souhaitez tester, exécuter vos tests et vérifier s'ils ont échoué.
Lorsque vous n'acceptez pas l'exception et que vous échouez au test, JUnit inclut la trace de pile complète dans le message d'échec, ce qui vous permet de trouver rapidement la source de l'exception.
Utiliser Assertions.assertThatThrownBy (). IsInstanceOf () deux fois, comme indiqué ci-dessous, servirait cet objectif!
import org.assertj.core.api.Assertions;
import org.junit.Test;
public class AssertionExample {
@Test
public void testNoException(){
assertNoException();
}
private void assertException(){
Assertions.assertThatThrownBy(this::doNotThrowException).isInstanceOf(Exception.class);
}
private void assertNoException(){
Assertions.assertThatThrownBy(() -> assertException()).isInstanceOf(AssertionError.class);
}
private void doNotThrowException(){
//This method will never throw exception
}
}