Como testar tipos enum?

Atualmente, estou tentando criar um conjunto mais ou menos completo de testes de unidade para uma pequena biblioteca. Como queremos permitir a existência de diferentes implementações, queremos que este conjunto de testes seja (a) genérico, para que possamos reutilizá-lo para testar as diferentes implementações e (b) o mais completo possível. Para a parte (b), gostaria de saber se existe alguma prática recomendada para testar tipos de enumeração. Então, por exemplo, eu tenho um enum como segue:

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

Aqui eu quero garantir que todos os tipos de enum realmente existam. Isso é mesmo necessário? Atualmente estou usando o HamcrestsassertThat como no exemplo a seguir:

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

Um enum "January" ausente resultaria em um erro de compilação de tempo, que pode ser corrigido criando o tipo de enum ausente.

Estou usando Java aqui, mas não me importo se sua resposta é para um idioma diferente.

Editar:

Como mkato e Mark Heath apontam as enums de teste podem não ser necessárias, já que o compilador não compilará quando você estiver usando um tipo enum que não está lá. Mas eu ainda quero testar esses enums, já que queremos construir um test.jar semelhante ao TCK, que executará o mesmo teste em diferentes implementações. Então, minha pergunta foi mais para ser assim: Qual é a melhor maneira de testar tipos enum?

Depois de pensar um pouco mais, mudei a declaração de Hamcrest acima para:

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

Esta declaração agora lança um NPE quando janeiro não está lá (ainda). Há algo de errado com essa abordagem?

questionAnswers(5)

yourAnswerToTheQuestion