Как проверить типы перечислений?

В настоящее время я пытаюсь создать более или менее полный набор модульных тестов для небольшой библиотеки. Поскольку мы хотим разрешить существование различных реализаций, мы хотим, чтобы этот набор тестов был (а) универсальным, чтобы мы могли повторно использовать его для тестирования различных реализаций и (б) настолько полно, насколько это возможно. В части (b) я хотел бы знать, есть ли лучшая практика для тестирования типов перечислений. Так, например, у меня есть перечисление следующим образом:

public enum Month {
    January,
    February,
    ...
    December;
}

Здесь я хочу убедиться, что все типы перечислений действительно существуют. Это даже необходимо? В настоящее время я использую HamcrestsassertThat как в следующем примере:

assertThat(Month.January, is(notNullValue()));

Пропавший "январь" enum приведет к ошибке времени компиляции, которую можно исправить, создав недостающий тип enum.

Я здесь использую Java, но не возражаю, если вы ответите на другом языке.

Edit:

Как mkato, так и Mark Heath оба указали, что тестирование перечислений может быть необязательным, поскольку компилятор не будет компилироваться, когда вы используете тип enum, которого там нет. Но я все еще хочу протестировать эти перечисления, так как мы хотим создать отдельный TCK-подобный test.jar, который будет запускать один и тот же тест в разных реализациях. Таким образом, мой вопрос должен был звучать так: как лучше всего проверить типы перечислений?

Подумав об этом немного больше, я изменил приведенное выше утверждение Hamcrest:

assertThat(Month.valueOf("January"), is(notNullValue()));

Это утверждение теперь бросает NPE, когда января еще нет (пока). Что-то не так с этим подходом?

Ответы на вопрос(5)

Ваш ответ на вопрос