SpringRunner vs SpringBootTest

时间:2019-11-17 14:08:38

标签: java spring-boot junit spring-boot-test

在单元测试中,@Runwith(SpringRunner.class)@SpringBootTest有什么区别?

您能给我解释一下每个用例吗?

3 个答案:

答案 0 :(得分:11)

@RunWith是JUnit 4中使用测试运行器的旧注释。如果您使用的是JUnit 5(木星),则应使用@ExtendWith来使用JUnit扩展

请参阅 https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing

“”如果您使用的是JUnit 4,请不要忘记也将@RunWith(SpringRunner.class)添加到测试中,否则注释将被忽略。如果您使用的是JUnit 5,则无需添加等效项已将@ExtendWith(SpringExtension.class)作为@SpringBootTest以及其他@…Test注释进行了注释。

答案 1 :(得分:0)

来自spring.io

  

@RunWith(SpringRunner.class)告诉JUnit使用Spring的测试运行   支持。 SpringRunnerSpringJUnit4ClassRunner的新名称,   眼睛上就容易多了。

     

@SpringBootTest的意思是“在Spring Boot的支持下进行引导”(例如   加载application.properties并给我所有的Spring Boot优点)

因此,如果您不需要Spring Boot为集成测试加载的所有内容,则可能不需要@SpringBootTest

答案 2 :(得分:0)

@RunWith(SpringRunner.class)::您需要此批注以在junit测试期间仅启用诸如@Autowire@MockBean等的Spring Boot功能。

  

用于在Spring Boot测试功能和JUnit之间建立桥梁。每当我们在JUnit测试中使用任何Spring Boot测试功能时,都将需要此批注。

@SpringBootTest::此批注用于加载完整的应用程序上下文以进行端到端集成测试

  

当我们需要引导整个容器时,可以使用@SpringBootTest批注。注释通过创建将在我们的测试中使用的ApplicationContext起作用。

这是在两种情况下Baeldung

的清晰示例的文章