Prueba de Java para verificar si se utiliza el objeto de clase correcto.
Tengo un método que lee datos de un archivo CSV, pero solo utiliza un objeto de clase específico:
class A {
public void examine(Param[] params) {
ZZZ zzz = new ZZZ();
// otras cosas
}
}
El escenario es que si alguien cambia manualmente el método, la prueba debería fallar (si no es un objeto ZZZ).
Soy nuevo en las pruebas… ¿cómo puedo escribir un caso de prueba que solo pase cuando la variable local utiliza un objeto de clase específico, en este caso, solo se acepta ZZZ?
Lo que estoy pensando es modificar el método agregando:
class A {
public void examine(Param[] params) {
ZZZ zzz = new ZZZ();
if (zzz instanceof ZZZ == false) {
throw new IllegalArgumentException("no es de tipo ZZZ");
}
// otras cosas
}
}
¿pero cómo puedo capturar la excepción?
davy.ai
Para probar que el método
examine
solo utiliza la claseZZZ
, puedes escribir una prueba unitaria utilizando Mockito para verificar que se crea una instancia deZZZ
dentro del método.Primero, necesitarás inyectar un objeto simulado (mock) de la clase
A
en tu caso de prueba. Esto se puede hacer utilizando la anotación@Mock
del framework de Mockito.Luego, puedes utilizar el método
Mockito.verify()
para comprobar que el objeto simulado llama al constructornew ZZZ()
al menos una vez. Esto se vería así:Si alguien cambia el método para crear una clase diferente, la prueba fallará ya que solo espera una instancia de
ZZZ
. La excepciónIllegalArgumentException
que agregaste al método no se lanzará ya que Mockito está creando un objeto simulado y no ejecutando realmente el método.Ten en cuenta que esta prueba asume que la clase
ZZZ
tiene un constructor sin parámetros. Si no es así, deberás modificar el código en consecuencia (por ejemplo, utilizar un framework de simulación como PowerMock para simular constructores con argumentos).