JUnit test pour assertEqual NullPointerException
Je ne suis pas sûr de savoir pourquoi les cas de test ne dispose pas d'une sortie de true
. Deux cas doivent donner un NullPointerException
.
J'ai essayé de faire cela (Pas exactement le même mais il donne et de sortie de true
) :
String 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 TestRunnerStringMethods {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunitMyIndexOf.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
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(nullString.indexOf(3), StringMethods.myIndexOf(null, 'd',3));
}
C'est pas entièrement claire de ce que vous êtes en train de tester, ou de faire valoir ici. Pourquoi avez-vous avoir à la fois une assertion et une exception prévue dans la même méthode de test? L'assertion ne sera jamais atteint en raison de la
NullPointerException
.
OriginalL'auteur Liondancer | 2014-03-25
Vous devez vous connecter pour publier un commentaire.
Je crois que vous voulez utiliser
fail
ici:Assurez-vous d'ajouter
import static org.junit.Assert.fail;
si vous en avez besoin.OriginalL'auteur David Koelle
Dans Java 8 et JUnit 5 (Jupiter), l'on peut affirmer pour les exceptions comme suit.
À l'aide de
org.junit.jupiter.api.Assertions.assertThrows
Cette approche permettra d'utiliser l'Interface Fonctionnelle
Executable
dansorg.junit.jupiter.api
.Consulter :
OriginalL'auteur prime