モックした後もヌルポインタ例外が発生しています。私のプロジェクト構造を見つけてください。
//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();
}
}
私はここで TDD を使おうとしています. サービスインターフェースを書いていることを意味します. しかし, 実際の実装ではありません. listPets() メソッドをテストするために、このサービスを使用してペットのリストを取得していることは明らかです。しかし、ここでは App クラスの listPets() メソッドをテストするつもりなので、サービス インターフェイスをモックしようとしています。
サービスを使用してペットを取得する App クラスの listPets() メソッド。したがって、mockito を使用してその部分をモックしています。
Mockito.when(petService.listPets()).thenReturn(list);
しかし、単体テストが実行されているとき、 perService.listPets()は、上記のMockito.whenコードを使用してモックしたNullPointerExceptionをスローします。これについて私を助けてもらえますか?