我在mockito中使用@RunWith(MockitoJUnitRunner.class)进行junit测试。但现在我使用spring-boot和JUnit 5。这两个注解有什么区别?我可以只使用@ExtendWith(SpringExtension.class)来模拟我的对象吗?
@RunWith(MockitoJUnitRunner.class)
@ExtendWith(SpringExtension.class)
0g0grzrc1#
涉及Spring时:
如果你想在你的测试中使用Spring测试框架功能,比如@MockBean,那么你必须使用@ExtendWith(SpringExtension.class)。它取代了弃用的JUnit 4 @RunWith(SpringJUnit4ClassRunner.class)。
@MockBean
@RunWith(SpringJUnit4ClassRunner.class)
不涉及Spring时:
如果你只想使用Mockito而不需要使用Spring,例如,当你只想使用@Mock/@InjectMocks annotations时,那么你需要使用@ExtendWith(MockitoExtension.class),因为它不会加载一堆不需要的Spring东西。它取代了弃用的JUnit 4 @RunWith(MockitoJUnitRunner.class)。
@Mock
@InjectMocks
@ExtendWith(MockitoExtension.class)
回答您的问题:
是的,你可以只使用@ExtendWith(SpringExtension.class),但是如果你在测试中没有涉及Spring测试框架功能,那么你可能只想使用@ExtendWith(MockitoExtension.class)。
1条答案
按热度按时间0g0grzrc1#
涉及Spring时:
如果你想在你的测试中使用Spring测试框架功能,比如
@MockBean
,那么你必须使用@ExtendWith(SpringExtension.class)
。它取代了弃用的JUnit 4@RunWith(SpringJUnit4ClassRunner.class)
。不涉及Spring时:
如果你只想使用Mockito而不需要使用Spring,例如,当你只想使用
@Mock
/@InjectMocks
annotations时,那么你需要使用@ExtendWith(MockitoExtension.class)
,因为它不会加载一堆不需要的Spring东西。它取代了弃用的JUnit 4@RunWith(MockitoJUnitRunner.class)
。回答您的问题:
是的,你可以只使用
@ExtendWith(SpringExtension.class)
,但是如果你在测试中没有涉及Spring测试框架功能,那么你可能只想使用@ExtendWith(MockitoExtension.class)
。