我不明白为什么我的执行测试在没有@RunWith(SpringRunner.class(的情况下运行得很好。我在测试类之上只有@SpringBootTest。请解释以下情况:1( 什么时候我必须将@RunWith(SpringRunner.class(和@SpringBootTest设置在一起?2( 当我只能设置@RunWith(SpringRunner.class(和@SpringBootTest时,使用是多余的?3( 当我只能设置@SpringBootTest和@RunWith(SpringRunner.class(时,使用是多余的?
我的代码执行良好的测试是:
@SpringBootTest
//@RunWith(SpringRunner.class)
class SpringBootSimpleTestExampleApplicationTests {
@Autowired
private ApplicationContext applicationContext;
@Test
void contextLoads() {
Object restTempalte = applicationContext.getBeanDefinitionCount();
Assertions.assertThat(applicationContext).isNotNull();
}
}
@SpringBootTest
它在@ContextConfiguration提供的常规Spring TestContext之上提供了以下功能(classes=…)弹簧测试中的注释。
当未使用嵌套的@Configuration类并且未指定显式类时,自动搜索@SpringBootConfiguration。允许使用properties属性定义自定义环境属性。提供对不同webEnvironment模式的支持,包括启动完全运行的web服务器侦听已定义或随机端口的功能。注册TestRestTemplate和/或WebTestClientbean,以便在使用完全运行的web服务器的web测试中使用。
https://howtodoinjava.com/spring-boot2/testing/springboottest-annotation/