メソッドが実行されていないことを確認したいので、Expectation 設定で実行しようとしましたが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; }
、テストもパスします。ここに明らかな何かが欠けているに違いありません...