no he proporcionado una declaración de campo de instancia, así que traté de construir la instancia. Sin embargo, el constructor o el bloque de inicialización generaron una excepción

2 minutos de lectura

Avatar de usuario de Pavan kalyan athukuri
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.

  • 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

Avatar de usuario de Saverio Mirko Viola
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.

  1. 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.

  1. 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.

¿Ha sido útil esta solución?