Ricevo eccezione del puntatore nullo anche dopo il mocking. Si prega di trovare la mia struttura del progetto.mockito - beffardo un'interfaccia - lancio di NullPointerException
//this is the pet interface
public interface Pet{
}
// An implementation of Pet
public class Dog extends Pet{
int id,
int petName;
}
// This is the Service Interface
public interface PetService {
List<Pet> listPets();
}
// a client code using the PetService to list Pets
public class App {
PetService petService;
public void listPets() {
// TODO Auto-generated method stub
List<Pet> listPets = petService.listPets();
for (Pet pet : listPets) {
System.out.println(pet);
}
}
}
// This is a unit test class using mockito
public class AppTest extends TestCase {
App app = new App();
PetService petService = Mockito.mock(PetService.class);
public void testListPets(){
//List<Pet> listPets = app.listPets();
Pet[] pet = new Dog[]{new Dog(1,"puppy")};
List<Pet> list = Arrays.asList(pet);
Mockito.when(petService.listPets()).thenReturn(list);
app.listPets();
}
}
Sto cercando di usare TDD qui, significa che ho l'interfaccia di servizio scritta, ma non l'effettiva attuazione. Per testare il metodo listPets(), so chiaramente che sta usando il servizio per ottenere l'elenco degli animali domestici. Ma la mia intenzione qui di testare il metodo listPets() della classe App, quindi sto cercando di deridere l'interfaccia del servizio.
Il metodo listPets() della classe App che utilizza il servizio per ottenere gli animali domestici. Quindi sto prendendo in giro quella parte usando mockito.
Mockito.when(petService.listPets()).thenReturn(list);
Ma quando il test di unità è in funzione, perService.listPets() gettando NullPointerException che ho beffato impiegando il suddetto Mockito.when codice. Potresti per favore aiutarmi su questo?
È necessario iniettare il finto nella vostra App, altrimenti App.petService sarà nulla quando si chiama listPets() – Morfic
come fare? –
È possibile utilizzare le annotazioni Mock e InjectMocks: maggiori dettagli qui http://stackoverflow.com/questions/19580197/injection-of-a-mock-object-into-an-object-to-be-tested-declared- as-a-field-in-th/19610215 # 19610215 – macias