Tester les exceptions d'une méthode avec EasyMock
Je suis novice pour les tests unitaires. Je suis à l'aide de TestNG avec MyEclipse à élaborer des scénarios de test unitaire pour mon application. Tout en le faisant, je suis confronté à quelques problèmes avec EasyMock. Voici mon code (Nom de la classe, la méthode des noms et des types de retour sont changés pour des raisons de sécurité, mais vous aurez une idée claire de ce que je suis en train de réaliser ici).
public MyClass
{
//This is a method in my class which calls a collaborator which I
//want to mock in my test case
public SomeObject findSomething(SomeOtherObject param) throws Exception
{
SomeOtherObject param a = myCollaborator.doSomething(param);
//Do something with the object and then return it
return a;
}
}
Maintenant, voici mon test. Maintenant ce que je veux atteindre dans mon test
cas, c'est que je veux vérifier que ma fonction (findSomething) correctement
throws exception dans le cas où une exception est levée. Dans le futur, certains
autre développeur peut modifier la signature (throws Exception n'est-ce pas
vraiment partie de la signature de la méthode) de la méthode et de supprimer les lancers
Exception de ma méthode. Alors, comment puis-je m'assurer que personne ne les modifications
c'?
@Test(dataProvider="mydataProvider", expectedExceptions=Exception.class)
public void MyTest(SomeOtherObject param) throws Exception {
{
EasyMock.expect(myCollaboratorMock.doSomething(param)).andThrow(new Exception());
EasyMock.replay(myCollaboratorMock);
}
Je suis arriver exception
"de java.lang.IllegalArgumentException: dernier
méthode appelée sur la maquette ne peut pas lancer java.lang.Exception"
Ce que je suis
fais de mal ici? Quelqu'un peut jeter une certaine lumière sur la façon d'écrire un essai
cas pour mon scénario particulier?
source d'informationauteur Sam ツ
Vous devez vous connecter pour publier un commentaire.
Le collaborateur du
doSomething()
méthode de ne pas déclarer qu'il peut jeter l'Exception, et vous dites à sa fantaisie pour lancer un. Il n'est pas possible.Exception est un checked exception. Il ne peut être levée si elle est déclarée dans la signature de la méthode. Si la méthode n'a pas
throws
clause, tout ce qu'il peut faire est de lancer des exceptions d'exécution (c'est à direRuntimeException
ou tout descendant de la classe).