Pavan kalyan athukuri
clase Ejemplo extiende padre{
public Example() {
super(Example.class)
}
cada vez que intento el
Prueba de clase pública{
@InjectMock Example example
@BeforeMethod
@BeforeTest
public void setUp(){
MockitoAnnotations.initMocks(this)
}
}
Está dando el error mencionado anteriormente.
Cualquier ayuda es apreciada.
Saverio Mirko Viola
hay un par de cosas en su código que no se usan correctamente. Creo que hay un poco de confusión y no está lo suficientemente claro qué hacer. Trataré de explicarte y darte algo para leer.
- Anotación @Injectmocks en la clase Test
La anotación @Injectmocks se usa para crear una instancia real de una clase en la que desea inyectar objetos @Mock. Echa un vistazo aquí para ver algunos ejemplos:
https://howtodoinjava.com/mockito/mockito-mock-injectmocks/ ,
https://www.baeldung.com/mockito-anotaciones
La anotación es una anotación de campo de instancia. Esto significa que no puede usar eso como lo está haciendo en una declaración de método, pero necesita usarlo en su lugar en un campo en la clase de prueba.
Supongamos que desea probar un método en una clase, luego usará esta anotación para crear una instancia de esa clase que contenga el método que se probará. En términos generales con analogías, injectmock es como la anotación Spring @Autowire, aunque no es lo mismo.
Ahora me he dado cuenta de que probablemente esto es lo que intentabas hacer (el código publicado de la clase de prueba no se ha resaltado correctamente). Debe poner una nueva línea después de @InjectMock Ejemplo de ejemplo. En cualquier caso, creo que hay un error en cómo usas la palabra clave super.
- Llamada al superconstructor en el constructor de ejemplo.
No sé qué es el constructor en la clase principal y cómo se hace, pero la regla es que pasa argumentos del constructor principal en la palabra clave super. Entonces, por ejemplo, si este es su constructor principal:
public Parent(String name){
this.name = name}
entonces necesitas hacer esto en el ejemplo:
public Example(String name, String code) {
this.code = code;
super(name);
}
Está pasando un .class en super(), no un campo.
Me gustaría darte más ayuda. Le sugiero que publique su código de manera más clara y con clases completas.
Bienvenido a Stack Overflow. Realice el recorrido para aprender cómo funciona Stack Overflow y lea Cómo preguntar sobre cómo mejorar la calidad de su pregunta. Luego edite su pregunta para incluir su código fuente como un ejemplo reproducible mínimo funcional, que otros pueden compilar y probar. También incluya el mensaje de error completo completo que recibe.
– programador
hace 18 horas