我希望检查某个方法是否未被运行,并尝试使用期望设置 times = 0;
,但是我没有得到预期的行为。
例如,下面的测试通过了,虽然调用了 Session#stop
方法,但是期望中有一个 times = 0;
的条件:
public static class Session {
public void stop() {}
}
public static class Whatever {
Session s = new Session();
public synchronized void method() {
s.stop();
}
}
@Test
public void testWhatever () throws Exception {
new Expectations(Session.class) {
@Mocked Session s;
{ s.stop(); times = 0; } //Session#stop must not be called
};
final Whatever w = new Whatever();
w.method(); // this method calls Session#stop => the test should fail...
// ... but it passes
}
注意:如果我用代码
{ s.stop(); times = 1; }
替换代码,测试也会通过:我一定漏掉了什么明显的东西……
StrictExpectations
似乎可以正确解决这个问题。 - S.D.