【JUnitメモ】static変数に注意
static変数を含むクラスをテストする場合、テスト前にかならず初期化すること。 失敗すればまだマシな方です。 最悪の場合は、「テストメソッドの実行順によって、うまく行ったり行かなかったりする」とか「間違った値で動くのを正常としちゃってバグを作りこむ」っていう悲惨な事態になります。
public class Static変数テスト {
private static int num = 1;
@Test
public void 値を変更() {
num = 3;
assertEquals(3, num);
}
@Test
public void 初期値確認() {
assertEquals(1, num);
}
}
すごく適当なサンプルです・・・。 テストメソッドごとにnumは初期化されません。 よって、先に「値を変更」テストが動くともう「初期値確認」テストは失敗します。 逆の場合は成功します。
当たり前って思うかもしれないんですけど、知らない人は知らないんですよね。 これをJenkinsでビルドしたりするとたまにコケる。 担当者に聞いても「うちの環境じゃ大丈夫」って言う。