请参阅下面的代码
我们的通用界面
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/