TestNG: Comment tester pour les exceptions obligatoires?
Je voudrais écrire un TestNG, vérifiez si une exception est levée en vertu d'une condition spécifique, et échoue à l'examen, si l'exception n'est levée. Est-il un moyen facile de le faire sans avoir à créer un supplément variable booléenne?
Un lié billet de blog sur ce sujet: http://konigsberg.blogspot.com/2007/11/testng-and-expectedexceptions-ive.html
OriginalL'auteur Christopher Parker | 2010-09-09
Vous devez vous connecter pour publier un commentaire.
@Test(expectedExceptions)
est utile pour les cas les plus courants:Par la documentation d'un test échoue si aucune
expectedException
est jeté:Ici sont quelques-uns des scénarios où
@Test(expectedExceptions)
n'est pas suffisant:Dans de tels cas, il suffit de revenir à la traditionnelle (pré-TestNG) modèle:
OriginalL'auteur Cedric Beust
Utilisation
@Test
annotation pour vérifier prévu des exceptions.Ou si vous ne voulez pas vérifier pour le message d'exception, à seulement ci-dessous est assez
De cette façon, vous n'avez pas besoin d'utiliser laid essayer bloc catch, il suffit d'invoquer vous exception lanceur de méthode à l'intérieur de la tester.
OriginalL'auteur harunurhan
Je suis en désaccord avec l'article sur la nature de l'essai des techniques employées. La solution utilise une porte, pour vérifier si le test de réussir ou d'échouer dans une étape intermédiaire.
À mon avis, il est préférable de faire appel à La Garde Des Assertions, surtout pour de tels tests (en supposant que le test ne s'est pas avéré être de longue haleine et complexe, qui est un anti-modèle en lui-même). À l'aide de garde-affirmations vous oblige à concevoir la CIBLE de l'une des manières suivantes:
Mais avant de considérer les possibilités ci-dessus, ont un coup d'oeil à l'extrait suivant de nouveau:
Si l'intention est de tester bookPlane() et vérifier pour l'exécution de cette méthode, il est préférable d'avoir bookAllSeats() dans un appareil. Dans ma compréhension, l'invocation de bookAllSeats() est équivalente à la configuration de l'SUT de s'assurer que l'invocation de bookPlane() échoue, et donc avoir un appareil à faire la même chose, il serait plus lisible de test. Si l'intention est différente, je vous recommande de tester l'état après chaque transition (comme normalement, je le ferais dans les tests fonctionnels), pour vous aider à identifier la cause d'origine de l'échec.
merci. J'ai dû le lire une fois de plus de voir pourquoi.
Je suis encore assez nouveau pour les tests unitaires, donc j'étais pas au courant de la notion de garde des assertions. Merci pour le lien!
OriginalL'auteur Vineet Reynolds
Pourquoi n'utilisez-vous pas l'essayer/échec/catch motif mentionné dans le billet de blog que vous avez associé?
TestNG se targue de ne pas avoir à le faire.
OriginalL'auteur Thomas Lötzer
catch-exception fournit probablement tout ce dont vous avez besoin pour tester prévu des exceptions.
OriginalL'auteur rwitzel