Java: test d'exception avec Junit 3
Je voudrais écrire un test pour IndexOutOfBoundsException
. Gardez à l'esprit que nous sommes censés utiliser JUnit 3.
Mon code:
public boolean ajouter(int indice, T element) {
if (indice < 0 || indice > (maListe.size() - 1)) {
throw new IndexOutOfBoundsException();
} else if (element != null && !maListe.contains(element)) {
maListe.set(indice, element);
return true;
}
}
Après quelques recherches, j'ai trouvé que vous pouvez faire cela avec JUnit 4 à l'aide de @Test(expected = IndexOutOfBoundsException.class)
mais pas où j'ai trouver comment faire cela dans JUnit 3.
Comment puis-je tester cette utilisation de JUnit 3?
source d'informationauteur Mobidoy
Vous devez vous connecter pour publier un commentaire.
Tests exceptions dans JUnit 3 utilise ce modèle:
La
fail()
permet de s'assurer que vous obtenez un message d'erreur si le code n'est pas de lever une exception.- Je utiliser ce modèle dans JUnit 4, car j'ai l'habitude de voulez vous assurer que les valeurs correctes sont visibles dans le message d'exception et
@Test
peux pas le faire.Fondamentalement, vous avez besoin d'appeler votre méthode et d'échouer si elle n'est pas jeter l'exception au droit, ou s'il jette quelque chose d'autre:
Une solution simple est d'ajouter un try catch pour le unittest et de laisser le test échoue lors de l'exception n'est pas levée
Une chose que vous pouvez faire est d'utiliser un booléen pour exécuter le test jusqu'à la fin et puis vous pouvez utiliser assert pour valider la levée de l'exception:
Par l'utilisation de ce test, le test ne sera jamais ne parviennent pas à exécuter et vous pouvez valider qu'un type d'exception est levée.
Dans votre méthode de test, l'appel
ajouter()
à l'intérieur d'untry
..catch
bloc, ce qui donne une valeur deindice
qui devrait provoquer l'exception levée, aveccatch
clause qui attireIndexOutOfBoundsException
: dans ce cas de retour de votre méthode d'essai et donc indiquer un laissez-passer.catch
clause qui attireThrowable
: dans ce cas, déclarer une défaillance (appelfail()
), en raison de la mauvaise nature de l'exception a été levéetry
..catch
déclarer une défaillance (appelfail()
), car aucune exception a été levée.L'extension @Aaron solution avec (statiques import) sucre syntaxique permet d'écrire:
Testable
est comme un Exécutable qui utilise le test() signature lancer à Lancer.Vous pouvez ajouter la vérification de l'exception message comme requis.