Es kommt darauf an, wie das enum Eingesetzt wird.
Wenn es tatsächlich nur als “Konstantensammlung” verwendet wird, muss es für jede dieser Konstanten einen Test geben, der deren Wirkung auf den auswertenden Code testet (also nicht das enum selbst). Konstanten die von keinem Test verwendet werden können ja der Theorie nach gar nicht im Programm auftreten…```@Test
public void testMethod__withStateNew__returnsWhatShouldBeReturnedOnNew(){
TheTestedObject tto = new TheTestedObject();
String returnedString = tto.method(MyEnum.NEW);
assertEquals(“what ever should be returned on new”,returnedString);
}
@Test
public void testMethod__withStateOwned__returnsWhatShouldBeReturnedOnOwned(){
TheTestedObject tto = new TheTestedObject();
String returnedString = tto.method(MyEnum.OWNED);
assertEquals(“what ever should be returned on owned”,returnedString);
}```
Generell ist aber von dieser Verwendung abzuraten, weil die große Gefahr besteht, dass man in seiner Anwendung switches verteilt, die auf diesem enum arbeiten.
Aber enums können ja viel mehr, zum Beispiel Methodenaufrufe delegieren:```@Test
public void testEnumNew__withVisitor__callsHandleNewOnVisitor(){
MyVisitorInterface mvi = mock(MyVisitorInterface.class);
MyEnum.NEW.handle(mvi);
verify(mvi).callMeWhenNew();
}
@Test
public void testEnumOwned__withVisitor__callsHandleOwnedOnVisitor(){
MyVisitorInterface mvi = mock(MyVisitorInterface.class);
MyEnum.OWNED.handle(mvi);
verify(mvi).callMeWhenOwned();
}```
das enum sähe dann so aus:```enum MyEnum{
NEW{
public void handle(MyVisitorInterface mvi){
mvi.callMeWhenNew();
}
},
OWNED{
public void handle(MyVisitorInterface mvi){
mvi.callMeWhenOwned();
}
};
public abstact void handle(MyVisitorInterface mvi);
}```
bye
TT