私はcan't fake an abstract class directlyと実装クラスを知っているので、私は実装クラスに偽を追加しました。jMockit Fake/MockUpを抽象メソッドとして削除するには?
@BeforeClass
public static void fakeCurrentYear() {
// Mocking the abstract 'Calender' does not work, see: https://github.com/jmockit/jmockit1/issues/71
// So we use the implementing class 'GregorianCalendar'.
new MockUp<GregorianCalendar>() {
@Mock public int get(Invocation invocation, int field) {
return 2016;
}
};
}
私はJUnit 4.12とMaven 3.xでjMockit v 1.31を使用しています。
テストを個別に実行すると、すべて問題ありません。
しかし、すべてのテストを一緒に実行すると、実装クラスのlog4jloggerが明らかに偽実装を使用するため、別のテストが失敗します。
以前はGregorianCalendar
がそのメソッドを上書きしていなかったためです。しかし、私は、テストクラスの後で自動的に偽物が削除されたと思った!これはバグですか?
手動で削除できますか?私はJMockit v1.25に戻ってスタティック変数yearMock = new MockUp<GregorianCalendar>() ...
を作成し、yearMock.tearDown()
を@AfterClass
メソッドで呼び出しましたが、何も変更されませんでした。