Mockito – burlándose de una interfaz – lanzando NullPointerException
Estoy recibiendo una excepción de puntero nulo después de burlarse también. Encuentre la estructura de mi proyecto.
//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(); } }
Estoy tratando de utilizar TDD aquí, significa que tengo la interfaz de servicio escrito, pero no la aplicación real. Para probar el método listPets (), claramente sé que su uso del servicio para obtener la lista de mascotas. Pero mi intención aquí para probar el método listPets () de la clase App, Por lo tanto estoy tratando de burlarse de la interfaz de servicio.
- Mockito + Dexmaker en Android
- Método de ContentValues no se burla
- Java.lang.AbstractMethodError cuando espía la LinkedList en Android
- Android: genera una intención simulada y devuelve algunos datos de intenciones
- PowerMock en el proyecto Android
El método listPets () de la clase App que utiliza el servicio para obtener las mascotas. Por lo tanto, me estoy burlando de esa parte usando mockito.
Mockito.when(petService.listPets()).thenReturn(list);
Pero cuando la prueba de unidad se está ejecutando, perService.listPets () lanzando NullPointerException que he burlado utilizando el código Mockito.when anterior. ¿Podrías ayudarme por esto?
- ¿Por qué ArgumentCaptor no coincide correctamente?
- Valor de Stub de Build.VERSION.SDK_INT en la prueba de unidad local
- Cómo espiar correctamente una actividad
- Compruebe que el método se llama en onNext del suscriptor de RxJava
- Mocking Static Methods con PowerMockito en Android
- Llamadas de método de burla usando power mockito - org.powermock.api.mockito.ClassNotPreparedException
- Error de tiempo de ejecución PowerMock + Mockito: ProxyFrameworkImpl no se pudo encontrar en classpath
- Cómo burlar los permisos para realizar pruebas en Android?
NullPointerException es porque, en la aplicación, petService no se instancia antes de intentar utilizarlo. Para inyectar el simulacro, en App, agregue este método:
public void setPetService(PetService petService){ this.petService = petService; }
Luego en su prueba, llame a:
app.setPetService(petService);
Antes de ejecutar app.listPets();
También puede usar la anotación @InjectMocks
, de esa manera usted no necesitará getters y setters. Sólo asegúrese de agregar a continuación en su caso de prueba después de anotar su clase,
@Before public void initMocks(){ MockitoAnnotations.initMocks(this); }
- ¿Cómo puedo crear un diálogo personalizado con dos datepicker?
- Agrega android-support-v13.jar en Android Studio