@ExtendWith(SpringExtension.class) 和 @ExtendWith(MockitoExtension.class) 有什么区别?

use*_*123 13 java mockito spring-boot junit5

我正在使用@RunWith(MockitoJUnitRunner.class)mockito 进行 junit 测试。但是现在我正在使用 spring-boot 和 JUnit 5。
这两个注释之间有什么区别?
我可以只@ExtendWith(SpringExtension.class)用来模拟我的对象吗?

小智 27

当涉及 Spring 时

如果您想在您的测试中使用 Spring 测试框架功能,例如@MockBean,那么您必须使用@ExtendWith(SpringExtension.class). 它取代了已弃用的 JUnit4@RunWith(SpringJUnit4ClassRunner.class)

当不涉及 Spring 时

如果您只想涉及 Mockito 而不必涉及 Spring,例如,当您只想使用@Mock/@InjectMocks注释时,那么您想使用@ExtendWith(MockitoExtension.class),因为它不会加载一堆不需要的 Spring 东西。它取代了已弃用的 JUnit4 @RunWith(MockitoJUnitRunner.class)

回答你的问题

是的,您可以只使用@ExtendWith(SpringExtension.class),但如果您的测试中不涉及 Spring 测试框架功能,那么您可能只想使用@ExtendWith(MockitoExtension.class).