Notas del estudio de Java: el papel de @RunWith (SpringRunner.class)

Lectura sugerida: https://blog.csdn.net/u011835956/article/details/113950577

Nota: Las pruebas se basan todas en el caso escrito por Junit, no en el marco TestNg. Si es el marco TestNg, debería heredar AbstractTestNGSpringContextTests, para que el bean tenga la capacidad de inyectar

 

Escriba la prueba localmente, ejecútela y siempre informe un puntero nulo, y luego, cuando inicie Springboot localmente, muestra que el bean está inyectado, pero mientras se ejecuta, informa un puntero nulo. Este es el código no modificado como sigue

public class TestApplicationTests {
    @Autowired
    UserService userService;

    @Test
    public void contextLoads() {
        User s=userService.getName("ssss");
        System.out.println("该用户ID为:"+s.getName());

    }

}

Los resultados después de la ejecución son los siguientes:

 

Más tarde, leí el código de otros y lo encontré. ! ! !

El rol de @RunWith (SpringRunner.class) indica que la clase de prueba Test debe usar clases inyectadas, como las clases inyectadas @Autowired. Con @RunWith (SpringRunner.class) estas clases se pueden instanciar en el contenedor de primavera, y la inyección automática puede tomar efecto.

 

El código modificado es el siguiente:

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestApplicationTests {
    @Autowired
    UserService userService;

    @Test
    public void contextLoads() {
        User s=userService.getName("ssss");
        System.out.println("该用户ID为:"+s.getName());

    }

}

Funciona satisfactoriamente.

 

 

Supongo que te gusta

Origin blog.csdn.net/mumuwang1234/article/details/115129688
Recomendado
Clasificación