java - 使用泛型时我应该做什么来测试 EasyMock 对象?易模拟

标签 java unit-testing generics easymock

请参阅下面的代码

我们的通用界面

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 对象?易模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2511476/

相关文章:

java - 泛型和扩展的问题

javascript - typescript 中的 java interface.class 相当于什么

java - 使用支持库自动调整主屏幕小部件中的文本大小

php - 如何在 phpunit 中进行严格的相等/三重相等比较?

java - 使用特定字符串调用的测试方法

java - 如何模拟一个预期返回 HashMap 的方法?

java - 泛型与功能相似方法的 Eclipse 错误

java - 将 Java 8 Lambda 与泛型一起使用

java - 单击返回时在 SearchView 中重置搜索

java.lang.IllegalArgumentException : FormUrlEncoded can only be specified on HTTP methods with request body (e. g., @POST)