Devo usare una simulazione o creare una nuova istanza di un oggetto nei test unitari? [chiuso]

1

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?

    
posta Ales 21.10.2015 - 23:35
fonte

1 risposta

3

Dipende in gran parte dal fatto che doSomethingWith usi ogni singolo campo di Country . Se sì, i due approcci sarebbero equivalenti e spetterà a te decidere quale sia più leggibile. Altrimenti, è molto più pulito creare un oggetto fittizio che stub solo i metodi con cui si interagisce, tralasciando quelli che non sono rilevanti. Ciò renderebbe più facile capire cosa viene testato indicando chiaramente le parti date / when / then.

    
risposta data 22.10.2015 - 00:47
fonte

Leggi altre domande sui tag