问题
Mockito框架有什么区别?@Mock
和@InjectMocks
?
#1 热门回答(285 赞)
@Mock
创建一个mock.@InjectMocks
,创建该类的实例,并将使用@Mock
(或@Spy
)注释创建的模拟注入此实例。请注意,你必须使用566585419或Mockito.initMocks(this)
初始化这些模拟并注入它们。
@RunWith(MockitoJUnitRunner.class)
public class SomeManagerTest {
@InjectMocks
private SomeManager someManager;
@Mock
private SomeDependency someDependency; // this will be injected into someManager
//tests...
}
#2 热门回答(52 赞)
在你的测试类中,测试类应使用@InjectMocks进行注释。这告诉Mockito哪个类注入模拟:
@InjectMocks
private SomeManager someManager;
从那时起,我们可以指定类中的哪些特定方法或对象,在本例中为SomeManager,将替换为模拟:
@Mock
private SomeDependency someDependency;
在此示例中,将模拟SomeManager类中的SomeDependency。
#3 热门回答(44 赞)
@Mock
annotation嘲笑有关对象。
@InjectMocks
annotation允许向底层对象注入@Mock
创建的不同(和相关)模拟。
两者都是互补的。