我正在尝试使用Mockito对调用方法的次数进行一些验证,但我在所有可以找到的教程中看到的语法在eclipse中导致“未解决的编译问题”错误。我正在嘲笑的课程是:
public class ClassToBeMocked {
public void methodToVerify(String input) {
}
}
测试是:
@RunWith(MockitoJUnitRunner.class)
public class MockitoTest {
@Mock ClassToBeMocked mockedClass;
@Before
public void setUp() throws Exception {
this.mockedClass = Mockito.mock(ClassToBeMocked.class);
}
@Test
public void test() {
Mockito.verify(mockedClass, Mockito.never()).methodToVerify();
}
}
但是当我尝试在eclipse中运行测试时,我收到了这个错误:
java.lang.Error: Unresolved compilation problem:
The method methodToVerify(String) in the type ClassToBeMocked is not applicable for the arguments ()
at MockitoTest.test(MockitoTest.java:28)
at . . .
乍一看,这个错误似乎是合乎逻辑的:毕竟,好像我在没有传递所需参数的情况下调用方法。但我认为Mockito会做一些引擎盖工作以使其发挥作用。
如果我对框架的使用是错误的,那么应该如何验证这种方法?
我正在使用Mockito版本2.7.6。我没有尝试在eclipse之外运行测试,因为我是java / junit / mockito / maven的新手,我还没有弄清楚如何从终端运行测试。
答案 0 :(得分:3)
你需要包含一个参数匹配器,例如: anyString()
:
Mockito.verify(mockedClass, Mockito.never()).methodToVerify(Mockito.anyString());
答案 1 :(得分:1)
profileFields:['id', 'email', 'link', 'locale', 'name',
'timezone', 'updated_time', 'verified', 'displayName']
使用上面的句子