在单元测试中,@Runwith(SpringRunner.class)
和@SpringBootTest
有什么区别?
您能给我解释一下每个用例吗?
答案 0 :(得分:11)
@RunWith是JUnit 4中使用测试运行器的旧注释。如果您使用的是JUnit 5(木星),则应使用@ExtendWith来使用JUnit扩展
“”如果您使用的是JUnit 4,请不要忘记也将@RunWith(SpringRunner.class)添加到测试中,否则注释将被忽略。如果您使用的是JUnit 5,则无需添加等效项已将@ExtendWith(SpringExtension.class)作为@SpringBootTest以及其他@…Test注释进行了注释。
答案 1 :(得分:0)
来自spring.io:
@RunWith(SpringRunner.class)
告诉JUnit使用Spring的测试运行 支持。SpringRunner
是SpringJUnit4ClassRunner
的新名称, 眼睛上就容易多了。
@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
的清晰示例的文章