Sono un principiante all'esame di unità. Sto usando TestNG con MyEclipse per sviluppare casi di test unitari per la mia applicazione. Mentre lo faccio, sto affrontando alcuni problemi con EasyMock. Ecco il mio codice (il nome della classe, i nomi dei metodi e i tipi di ritorno sono cambiati per ragioni di sicurezza, ma avrete una chiara idea di cosa sto cercando di ottenere qui).Test delle eccezioni di un metodo con EasyMock
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;
}
}
Ora ecco la mia prova. Ora quello che voglio veramente ottenere nel mio caso di prova è che voglio verificare che la mia funzione (findSomething) correttamente generi un'eccezione nel caso in cui venga lanciata qualche eccezione. In futuro alcuni sviluppatori dello possono modificare la firma (l'eccezione non è parte del metodo signature) del metodo e rimuovere i thea Eccezione dal mio metodo. Quindi, come posso assicurarmi che nessuno cambi lo ?
@Test(dataProvider="mydataProvider", expectedExceptions=Exception.class)
public void MyTest(SomeOtherObject param) throws Exception {
{
EasyMock.expect(myCollaboratorMock.doSomething(param)).andThrow(new Exception());
EasyMock.replay(myCollaboratorMock);
}
io sono sempre un'eccezione
"java.lang.IllegalArgumentException: ultima metodo chiamato sui campioni non può gettare java.lang.Exception"
Quello che sto facendo male Qui? Qualcuno può far luce su come scrivere un test per il mio particolare scenario?
Falso. Usando [bugie generiche] (http://java.dzone.com/articles/throwing-undeclared-checked) è possibile lanciare eccezioni controllate da praticamente ovunque. – jontejj