私は現在、小さなライブラリ用の単体テストの多かれ少なかれ完全なセットを構築しようとしています。さまざまな実装が存在できるようにしたいので、この一連のテストを (a) さまざまな実装をテストするために再利用できるように一般的なものにし、(b) できるだけ完全なものにしたいと考えています。(b) の部分については、列挙型をテストするためのベスト プラクティスがあるかどうかを知りたいです。たとえば、次のような列挙型があります。
public enum Month {
January,
February,
...
December;
}
ここで、すべての列挙型が実際に存在することを確認したいと思います。それも必要ですか?assertThat
現在、次の例のようにHamcrests を使用しています。
assertThat(Month.January, is(notNullValue()));
「January」列挙型が欠落しているとコンパイル時エラーが発生しますが、欠落している列挙型を作成することで修正できます。
ここではJavaを使用していますが、あなたの答えが別の言語に対するものであってもかまいません..
編集:
mkato と Mark Heath の両方が指摘しているように、存在しない列挙型を使用している場合、コンパイラはコンパイルされないため、列挙型のテストは必要ない可能性があります。しかし、異なる実装で同じテストを実行する別の TCK のような test.jar を構築したいので、これらの列挙型をテストしたいと思います。したがって、私の質問は次のようなものでした:列挙型をテストする最良の方法は何ですか?
もう少し考えた後、上記の Hamcrest ステートメントを次のように変更しました。
assertThat(Month.valueOf("January"), is(notNullValue()));
このステートメントは、1 月が (まだ) ない場合に NPE をスローするようになりました。このアプローチに問題はありますか?