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.