【问题标题】:JUnit EasyMock unexpected method call expected 1 actual 0JUnit EasyMock 意外方法调用预期 1 实际 0
【发布时间】:2013-05-28 16:45:47
【问题描述】:

我对 JUnit 测试一种方法有疑问。我使用 EasyMock.createMock 来模拟 someDao。 我仍然得到easymock unexpected method call expected 1 actual 0 someDato.findByCriteria(criteria, -1, -1) 这就是代码的样子(它只是草稿)。 我怀疑问题出在criteria 对象中。 错误点行return someDato.findByCriteria(criteria, -1, -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);
}

有什么想法吗?

【问题讨论】:

    标签: java junit easymock


    【解决方案1】:

    我打赌DetachedCriteria 没有实现/覆盖equalshashcode。验证将使用预期参数的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很好。
    • isA(DetachedCriteria.class), eq(-1), eq(-1) 这是正确的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    相关资源
    最近更新 更多