¿Cómo probar los tipos de enumeración?

Actualmente estoy tratando de construir un conjunto más o menos completo de pruebas unitarias para una pequeña biblioteca. Como queremos permitir que existan diferentes implementaciones, queremos que este conjunto de pruebas sea (a) genérico, de modo que podamos reutilizarlo para probar las diferentes implementaciones y (b) lo más completo posible. Para la parte (b) me gustaría saber si existe alguna práctica recomendada para probar tipos de enumeración. Así, por ejemplo, tengo una enumeración de la siguiente manera:

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

Aquí quiero asegurar que todos los tipos de enumeración realmente existan. ¿Es eso incluso necesario? Actualmente estoy usando HamcrestsassertThat Como en el siguiente ejemplo:

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

Una enumeración de "Enero" faltante daría lugar a un error de tiempo de compilación que se puede corregir creando el tipo de enumeración que falta.

Estoy usando Java aquí, pero no me importa si tu respuesta es para un idioma diferente.

Editar:

Como mkato y Mark Heath han señalado, las pruebas de enumeración pueden no ser necesarias ya que el compilador no se compilará cuando esté utilizando un tipo de enumeración que no esté allí. Pero todavía quiero probar esas enumeraciones, ya que queremos crear un test.jar similar a TCK, que ejecutará la misma prueba en diferentes implementaciones. Así que mi pregunta estaba más destinada a ser como: ¿Cuál es la mejor manera de probar los tipos de enumeración?

Después de pensarlo un poco más, cambié la declaración de Hamcrest anterior a:

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

Esta declaración ahora arroja un NPE cuando enero no está allí (todavía). ¿Hay algo malo con este enfoque?

Respuestas a la pregunta(5)

Su respuesta a la pregunta