我之前在使用mockito进行junit测试时使用的是@RunWith(MockitoJUnitRunner.class)
。但现在我要开始使用spring-boot和JUnit 5了。
这两个注释有什么区别?
我能否只使用@ExtendWith(SpringExtension.class)
来模拟我的对象?
我之前在使用mockito进行junit测试时使用的是@RunWith(MockitoJUnitRunner.class)
。但现在我要开始使用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)
。