Devo scrivere un test unitario per un metodo come:
void doSomethingWith(Country country) {...}
Ci sono le seguenti classi:
Interfaccia:
public interface Country {
String getName();
... // and a lot of other methods, more than 20
}
Classe, implementando l'interfaccia:
public class CountryInst implements Country {
...
}
Per il mio test ho scelto tra le seguenti opzioni:
1) Passa un mock come parametro:
Country country = Mockito.mock(Country.class);
Mockito.doReturn("Canada").when(country).getName();
doSomethingWith(country);
2) O creare una nuova istanza di CountryInst e sovrascrivere il metodo necessario:
Country country = new CountryInst {
@Override
String getName() {
return "Canada";
}
}
doSomethingWith(country);
Quale è preferibile?