Hamcrest / JMock的代码如下所示:
@Test
public void setsSniperValuesInColumns() {
context.checking(new Expectations() {{
one(listener).tableChanged(with(aRowChangedEvent()));
}});
model.sniperStatusChanged(new SniperState("item id", 555, 666), MainWindow.STATUS_BIDDING);
...
}
private Matcher<TableModelEvent> aRowChangedEvent() {
return samePropertyValuesAs(new TableModelEvent(model, 0));
}
NB这是从“通过测试的指导下成长的面向对象的软件”(第157页)拍摄。 这本书的作者使用Hamcrest和JMock的。 我认为AssertJ和是的Mockito可能会更好的。 当然,这将有可能在同一个项目中使用这两种测试框架,但它会变得相当混乱,似乎并不理想。
samePropertyValuesAs
来自import static org.hamcrest.beans.SamePropertyValuesAs.samePropertyValuesAs;
with
似乎来自JMock的
所以我想找到一种方法,我可以使用的Mockito的verify
,他们使用的方法Expectations
。 但有什么办法,我可以这样做:
verify( listener ).tableChanged( samePropertyValues( new TableModelEvent( model, 0 )));
......当然,可以想见一种替代方法,你到处去逐个设置所有的属性...但我想拥有的Mockito更好的东西开箱。