Posted at

jMockit 1.9にしたらえらく変わってた

More than 5 years have passed since last update.

jMockit0.x系から、jMockit1.9に乗り換えようと思ったら、以下のような記述でコケる

@MockClass(realClass=Hoge.class) // MockClassアノテーション廃止されてるせいで、コンパイラーさんがOKOKO

public class HogeMock {
}

Mockit.setUpMock(HogeMock.class); // ここでいねーよってコンパイラーさんがOKOKO

new Expectations() {
Fuga fuga; // これではMock化してくれないっぽい?
{
this.fuga = new Fuga(); // 動かすとMockじゃないってJVMがOKOKO
}
};

どうやら、基本的にMockUp使えってことらしくて、Expectitionsはテストクラスのフィールドやメソッドの引数にMockedアノテーション付ける以外にはダメっぽそう。

TestNG+jMockit+EclEmmaな環境だと、EclEmma2.3.1とかにしてしまうだけで、jMockitとぶつかって、テストの起動でコケてくれるので、jMockitのバージョンを上げるか、EclEmmaを2.2系に戻すほかないけど、Java8対応とかするにはEclEmma2.3.1にしないとダメなので、jMockitをバージョンアップするしかないという…

まぁ、今どきJava6って、いい加減にやばいんじゃない?セキュリティとかセキュリティとかセキュリティとかセキュリティとか...大事すぎることなので、4回言いました。