LoginSignup
28
32

More than 5 years have passed since last update.

JUnit + jMockit が良いよ

Posted at

私がjMockitに出会ったのは去年の夏でした…ってのはどうでも良くてjMockitを紹介したく。
素晴く色々できるのですがイマイチ情報が少ないので言いたいことだけ書いちゃいます。

ちなみにこの辺を参考に。

コンストラクタのモッキングができる

Hoge.java
public String doAnything() {
    String name = new Hoge().getName();
    return "こんにちは" + name;
}

DI使ってないとこんな書き方してたりしますよね。
でもjMockitなら大丈夫。

HogeTest.java
class HogeTest {
    @Mocked
    private Fuga fuga;

    @Test
    public void doAnythingのテスト() {
        Hoge hoge = new Hoge();
        new Expectations() {{
             new Fuga(); result=fuga;
             fuga.getName(); result="ホゲ男";
        }}
        assertThat(hoge.doAnything() ,is("こんにちはホゲ男"));
    }
}

コンストラクタそのものをモッキングして、モックインスタンスを変えさせることができます。

static メソッドのモッキングができる

Hoge.java
public String doAnything() {
    String name = Hoge.getName();
    return "こんにちは" + name;
}

staticメソッド使ったりしますよね。
でもjMockitなら大丈夫。

HogeTest.java
class HogeTest {
    @Mocked
    private Fuga fuga;

    @Test
    public void doAnythingのテスト() {
        Hoge hoge = new Hoge();
        new Expectations() {{
             Fuga.getName(); result="ホゲ男";
        }}
        assertThat(hoge.doAnything() ,is("こんにちはホゲ男"));
    }
}

って書き始めると、

  • Verificationでモックが呼ばれた回数をチェック
  • Verificationでモックに渡された引数をassert
  • 部分モッキング
  • テスト対象のクラスのprivateメソッドの部分モッキング
  • privateなフィールドに無理やり値を代入してテスト
  • カスケードモッキング

とネタがまだあるのに疲れたのでまた今度にします。

28
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
32