@ExtendWith(SpringExtension.class) 和@ExtendWith(MockitoExtension.class) 有什么区别?
What is the difference between @ExtendWith(SpringExtension.class) and @ExtendWith(MockitoExtension.class)?
我使用 @RunWith(MockitoJUnitRunner.class)
通过 mockito 进行 junit 测试。但现在我正在使用 spring-boot 和 JUnit 5.
这两个注释有什么区别?
我可以只使用 @ExtendWith(SpringExtension.class)
来模拟我的对象吗?
涉及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)
.
我使用 @RunWith(MockitoJUnitRunner.class)
通过 mockito 进行 junit 测试。但现在我正在使用 spring-boot 和 JUnit 5.
这两个注释有什么区别?
我可以只使用 @ExtendWith(SpringExtension.class)
来模拟我的对象吗?
涉及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)
.