看下面的代码

我们的通用界面

public interface Repository<INSTANCE_CLASS, INSTANCE_ID_CLASS> {

    void add(INSTANCE_CLASS instance);
    INSTANCE_CLASS getById(INSTANCE_ID_CLASS id);

}


和一个班

public class Order {

    private Integer id;
    private Integer orderNumber;

    // getter's and setter's

    public void equals(Object o) {
        if(o == null)
            return false;

        if(!(o instanceof Order))
            return false;

        // business key
        if(getOrderNumber() == null)
            return false;

        final Order other = (Order) o;
        if(!(getOrderNumber().equals(other.getOrderNumber())))
            return false;

        return true;
    }

    // hashcode

}


当我做以下测试时

private Repository<Order, Integer> repository;

@Before
public void setUp {

    repository = EasyMock.createMock(Repository.class);

    Order order = new Order();
    order.setOrderNumber(new Integer(1));

    repository.add(order);

    EasyMock.expectLasCall().once();
    EasyMock.replay(repository);
}

@Test
public void addOrder() {
    Order order = new Order();
    order.setOrderNumber(new Integer(1));

    repository.add(order);

    EasyMock.verify(repository)
}


我懂了

Unexpected method call add(br.com.smac.model.domain.Order@ac66b62):
    add(br.com.smac.model.domain.Order@ac66b62): expected: 1, actual: 0
        at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:43)
        at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:72)
        at $Proxy4.add(Unknown Source)


为什么它不能按预期工作?我应该怎么做才能通过考试?任何解决方法???

最佳答案

我复制了您的代码,并使用EasyMock 2.0在Java 1.6上运行了它,效果很好。我必须修复某些部分,例如public void equals(Object o)应该是public boolean equals,但显然您的真实代码中有正确的部分。
您是否正在使用其他EasyMock版本,或者我错过了什么?

干杯
汤玛士

关于java - 使用泛型时,我应该怎么做来测试EasyMock对象? EasyMock,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2511476/

10-17 02:52