背景
既存のソースコードに対して単体テストを記載するにあたって、タイトルのとおり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メソッドを用いるとコンパイルエラーとなってしまいます。
簡単ではありますが、本記事が少しでもお役に立てれば幸いです。