在单元测试中,@Runwith(SpringRunner.class)
&之间有什么区别@SpringBootTest
?
您能给我解释一下每个用例吗?
在单元测试中,@Runwith(SpringRunner.class)
&之间有什么区别@SpringBootTest
?
您能给我解释一下每个用例吗?
Answers:
@RunWith(SpringRunner.class):您需要此批注以在junit测试期间仅启用spring boot功能(如@Autowire
)@MockBean
。
用于在Spring Boot测试功能和JUnit之间建立桥梁。每当我们在JUnit测试中使用任何Spring Boot测试功能时,都将需要此批注。
@SpringBootTest:此批注用于加载完整的应用程序上下文以进行端到端集成测试
当我们需要引导整个容器时,可以使用@SpringBootTest批注。批注通过创建将在我们的测试中使用的ApplicationContext起作用。
下面是关于这两种情况下明显的例子文章Baeldung
@RunWith(SpringRunner.class)
告诉JUnit使用Spring的测试支持运行。SpringRunner
是的新名称SpringJUnit4ClassRunner
,在眼睛上稍微容易一点。
@SpringBootTest
说的是“在Spring Boot的支持下进行引导”(例如,加载application.properties
并给我所有Spring Boot的好处)
因此,如果您不需要Spring Boot为集成测试加载的所有内容,则可能不需要 @SpringBootTest
@RunWith是JUnit 4中的一个旧注释,用于使用测试运行程序。如果您使用的是JUnit 5(木星),则应使用@ExtendWith来使用JUnit扩展
“如果使用的是JUnit 4,请不要忘记也将@RunWith(SpringRunner.class)添加到测试中,否则注释将被忽略。如果使用的是JUnit 5,则无需添加等效的@ExtendWith( SpringExtension.class)(如@SpringBootTest)和其他@…Test注释已使用它进行注释。