Test JUnit pour assertEqual NullPointerException

Je ne suis pas sûr de savoir pourquoi le scénario de test n’a pas de résultat true . Les deux cas devraient donner une NullPointerException .

J’ai essayé de faire cela (pas exactement la même chose mais ça donne une sortie de true ):

  Ssortingng nullStr = null; //@Test public int NullOutput1() { nullStr.indexOf(3); return 0; } //@Test(expected=NullPointerException.class) public int NullOutput2() { nullStr.indexOf(2); return 0; } @Test(expected=NullPointerException.class) public void testboth() { assertEquals(NullOutput1(), NullOutput2()); } 

Coureur:

 import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunnerSsortingngMethods { public static void main(Ssortingng[] args) { Result result = JUnitCore.runClasses(TestJunitMyIndexOf.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toSsortingng()); } System.out.println(result.wasSuccessful()); } } 

Méthode:

 public static int myIndexOf(char[] str, int ch, int index) { if (str == null) { throw new NullPointerException(); } // increase efficiency if (str.length <= index || index < 0) { return -1; } for (int i = index; i < str.length; i++) { if (index == str[i]) { return i; } } // if not found return -1; } 

Cas de test:

 @Test(expected=NullPointerException.class) public void testNullInput() { assertEquals(nullSsortingng.indexOf(3), SsortingngMethods.myIndexOf(null, 'd',3)); } 

Je crois que vous voulez utiliser fail ici:

 @Test(expected=NullPointerException.class) public void testNullInput() { fail(nullSsortingng.indexOf(3)); } 

Assurez-vous d’append import static org.junit.Assert.fail; Si tu as besoin de.

En Java 8 et JUnit 5 (Jupiter), nous pouvons affirmer les exceptions comme suit. Utilisation de org.junit.jupiter.api.Assertions.assertThrows

public statique T assertThrows (Classe attendue Type, exécutable exécutable)

Assure que l’exécution de l’exécutable fourni lève une exception du type attendu et renvoie l’exception.

Si aucune exception n’est levée, ou si une exception d’un type différent est levée, cette méthode échouera.

Si vous ne souhaitez pas effectuer de vérifications supplémentaires sur l’instance d’exception, ignorez simplement la valeur de retour.

 @Test public void itShouldThrowNullPointerExceptionWhenBlahBlah() { assertThrows(NullPointerException.class, ()->{ //do whatever you want to do here //ex : objectName.thisMethodShoulThrowNullPointerExceptionForNullParameter(null); }); } 

Cette approche utilisera l’ Executable interface fonctionnelle dans org.junit.jupiter.api .

Référer :