Jestem początkującym w testowaniu jednostkowym. Używam TestNG z MyEclipse do opracowania przypadków testowych jednostkowych dla mojej aplikacji. Robiąc to mam problemy z EasyMock. Oto mój kod (nazwa klasy, nazwy metod i typy zwrotu zostały zmienione ze względów bezpieczeństwa, ale otrzymasz jasny obraz tego, co próbuję tutaj osiągnąć).Testowanie Wyjątki metody z EasyMockiem
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;
}
}
Oto mój test. Teraz, co faktycznie chcę osiągnąć w moim teście przypadku jest to, że chcę sprawdzić, czy moja funkcja (findSomething) właściwie zgłasza wyjątek w przypadku, gdy zgłoszony zostanie wyjątek. W przyszłości jakiś inny programista może zmienić podpis (wyrzuca wyjątek nie jest naprawdę częścią sygnatury metody) metody i usunąć wyrzucenia. Wyjątek od mojej metody. Jak mogę się upewnić, że nikt nie zmieni tego?
@Test(dataProvider="mydataProvider", expectedExceptions=Exception.class)
public void MyTest(SomeOtherObject param) throws Exception {
{
EasyMock.expect(myCollaboratorMock.doSomething(param)).andThrow(new Exception());
EasyMock.replay(myCollaboratorMock);
}
jestem coraz wyjątkiem
"java.lang.IllegalArgumentException: ostatni metody nazywanej na mock nie może rzucać java.lang.Exception"
Co Jestem robi źle tutaj? Czy ktoś może rzucić trochę światła na to, jak napisać test na konkretny scenariusz?
Fałsz. Używając [ogólnych dziwactw] (http://java.dzone.com/articles/throwing-undeclared-checked) możliwe jest rzucanie sprawdzanych wyjątków z praktycznie dowolnego miejsca. – jontejj