6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Java】JUnitでnullかどうかをテストする方法

Posted at

背景

既存のソースコードに対して単体テストを記載するにあたって、タイトルのとおりnullかどうかを検証するテストをする必要がありました。
その過程で学んだことを簡単にですが、まとめました。

なお、使用しているのツールとバージョンはJUnit4(.12)でHamcrestは1.3です。

今回は↓のPrefixAdderにテストを書く想定で記載します。

PrefixAdder.java
public class PrefixAdder {
  public static String execute(String target, String prefix) {
    if (Objects.isNull(target)) {
      return null;
    }
    return prefix + target;
  }
}

失敗例

最初は普段の感覚で直感的に下記のように書いてみましたが、この書き方ではIDEに警告が出るレベルのコンパイルエラーとなります。

PrefixAdderTest.java
public class PrefixAdderTest {
  @Before
  public void setUp() {
  }

  @Test
  public void returnNullWhenTargetIsNull() {
    String result = PrefixAdder.execute(null, "prefix");
    // ↓コンパイルエラー
    assertThat(result, is(null));
  }
}

成功例

ではどのように書くのかというと、HamcrestのIsNullクラスのnullValueメソッドを用います。

PrefixAdderTest.java
public class PrefixAdderTest {
  @Before
  public void setUp() {
  }

  @Test
  public void returnNullWhenTargetIsNull() {
    String result = PrefixAdder.execute(null, "prefix");
    assertThat(result, nullValue());
  }
}

これで、nullであるかどうかのテストをすることができます。
なお、nullでないことをテストしたい場合は、同じくIsNullクラスのnotNullValueメソッドを用いればOKです。

まとめ

JUnitで値がnullであるかどうかを検証するテストを描きたい場合はHamcrestのIsNullクラスのnullValueメソッドを用いましょう。
普段の感覚でIsクラスのisメソッドを用いるとコンパイルエラーとなってしまいます。

簡単ではありますが、本記事が少しでもお役に立てれば幸いです。

参考

Hamcrest Tutorial
Hamcrest GitHub IsNullクラス

6
4
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
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?