Java JUnit EasyMock意外的方法调用应为1实际0

Java JUnit EasyMock意外的方法调用应为1实际0,java,junit,easymock,Java,Junit,Easymock,我对JUnit测试一种方法有问题。我使用EasyMock.createMock来模拟someDao。 我仍然得到easymock意外的方法调用,预期1实际0 someDato.findByCriteria(条件,-1,-1) 这就是代码的样子(只是草稿)。 我怀疑问题出在标准对象中。 错误点行返回someDato.findByCriteria(criteria,-1,-1) 有什么想法吗?我打赌DetachedCriteria不会实现/覆盖equals和hashcode。验证将使用预期参数的eq

我对JUnit测试一种方法有问题。我使用EasyMock.createMock来模拟someDao。 我仍然得到
easymock意外的方法调用,预期1实际0 someDato.findByCriteria(条件,-1,-1)
这就是代码的样子(只是草稿)。 我怀疑问题出在
标准
对象中。 错误点行
返回someDato.findByCriteria(criteria,-1,-1)


有什么想法吗?

我打赌
DetachedCriteria
不会实现/覆盖
equals
hashcode
。验证将使用预期参数的
equals
方法来查看它是否与传递的实际参数匹配。

我想使用
expect(someDato.findByCriteria(isA(DetachedCriteria.class,isA(Integer.class),isA(Integer.class)).andReturn(SomeClass)
但是我在这行中得到了NullPointerException尝试
isA(DetachedCriteria.class),eq(-1),eq(-1)
。如果在尝试后这不起作用,那么您是否尝试在
DetachedCriteria
中实现
equals
?不知道
DetachedCriteria
是一个Hibernate类。查看javadocs,它似乎没有覆盖
equals
,因此使用
isA
以外的任何东西都是不可能的。您应该你可以很好地使用isA(DetachedCriteria.class),eq(-1),eq(-1)
,这是正确的方法
@Test
public void findDataSericeTest(){
    DetachedCriteria criteria = DetachedCriteria.forClass(SomeClass.class);
    criteria.add(Restictions.eq("sth1",string1));
    criteria.add(Restictions.eq("sth2",string2));

    expect(someDato.findByCriteria(criteria, -1, -1)).andReturn(SomeClass);
    replay(someDao);
    serviceTested.findDataService("string1","string2");

    EasyMock.verify(someDao);

}

 public SomeClass findDataService(String string1, String string2){
    DetachedCriteria criteria = DetachedCriteria.forClass(SomeClass.class);
    criteria.add(Restictions.eq("sth1",string1));
    criteria.add(Restictions.eq("sth2",string2));

    return someDato.findByCriteria(criteria, -1, -1);
}