这就是我嘲笑另一个项目中出现的类Client
的对象:
@Mock
private Client client;
//Mocking method of class client -
@Test
public void test()
{
Mockito.when(client.getPassportDetail(Matchers.eq(bytes),Matchers.eq(properties)))
.thenReturn(hash);
}
类Client的结构:
class Client
{
public static boolean loadLibraries(Properties properties) {
}
public HashMap<String, String> getPassportDetail(byte[] b, Properties properties) throws Exception{
if (!loadLibraries(properties))
{
throw new UnsatisfiedLinkError();
}
}
因此,当我模拟getPassportDetail
方法时,它会被调用,而不是被模拟。
答案 0 :(得分:1)
这是一个常见的错误。实际上@Mock注释需要更多工作来实现。
你有3个选择:
添加
@RunWith(MockitoJUnitRunner.class)
到你的考试班。
或者
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
还有第3个选项,@Dawood ibn Kareem在下面的评论中建议:
还有第三个选项,它比这两个选项更好。使用新的Mockito规则 - @Rule public MockitoRule rule = MockitoJUnit.rule();.更多细节见my answer here,这也解释了为什么这是三个选项中最好的。
应该是全部。
您可以随时参考http://www.baeldung.com/mockito-annotations获取更多信息和详细说明。