Java 关于(any(Class.Class)))和JMock

Java 关于(any(Class.Class)))和JMock,java,testing,jmock,Java,Testing,Jmock,使用JMock: context.checking(new Expectations() {{ // Other oneOf() will() statements ... oneOf(shopAccount).enter(100, with(any(String.class))); will(returnValue(true)); // Other oneOf() will() statements ... }}); 执行期间将引发以下异常: java.la

使用JMock:

context.checking(new Expectations() {{
    // Other oneOf() will() statements ...

    oneOf(shopAccount).enter(100, with(any(String.class)));
    will(returnValue(true));

   // Other oneOf() will() statements ...
}});
执行期间将引发以下异常:

java.lang.IllegalArgumentException:并非所有参数都提供了显式匹配器:要么所有参数都必须由匹配器指定,要么所有参数都必须由值指定,不能混合使用匹配器和值


为什么我不能这样做?使用
with(any(Klass.class))

如果对任何参数使用
with
子句,则必须对所有参数使用它们,请重试

其中一个(shopAccount)。输入(with(equalTo(100)),with(any(String.class))


是不是
带有(equal(100))
,不是
equalTo
?你是说'equals()',那么这是一个返回布尔值的对象方法equalto()是一个静态匹配器方法,返回匹配器。@Lukas
org.jmock.expections.equal(T)
org.hamcrest.core.IsEqual.equalto(T)
是等价定义的(至少在jmock-2.5.1和junit-4.8.2版本中是如此),所以两者都可以工作。