可能重複:
Mocking Java enum to add a value to test fail case擴展/懲戒枚舉
我有一個關於枚舉工作的switch語句。交換機的「默認」情況是引發運行時異常。它的編碼這樣的陷阱,其中有人將一個值枚舉,但忘記更新switch語句的情況。
我想測試這個執行路徑,但我在努力尋找這樣做沒有把未使用的枚舉值到我的真實代碼的方式。這是濫用枚舉,還是有一個可接受的寫作這種測試的方式?
可能重複:
Mocking Java enum to add a value to test fail case擴展/懲戒枚舉
我有一個關於枚舉工作的switch語句。交換機的「默認」情況是引發運行時異常。它的編碼這樣的陷阱,其中有人將一個值枚舉,但忘記更新switch語句的情況。
我想測試這個執行路徑,但我在努力尋找這樣做沒有把未使用的枚舉值到我的真實代碼的方式。這是濫用枚舉,還是有一個可接受的寫作這種測試的方式?
我在想什麼,你可以做測試,這是有一個測試用例,你基本上得到您的枚舉的所有值一樣
T[] allEnumValues = enumValue.getDeclaringClass().getEnumConstants();
或
T[] allEnumValues = enumType.values();
,然後把每一個和把它放在switch
聲明中。如果您遇到異常,您有問題。
PS:Link到getEnumConstants()
方法。
這是不太我想要的東西,但一個有趣的方法。我實際上想要傳遞一個在switch語句中不存在的枚舉值,以便我可以證明RTE被拋出。 (我的客戶非常熱衷於代碼覆蓋.....) – DaveH
請看看這個:http://stackoverflow.com/questions/5323505/mocking-java-enum-to-add-a-value-to-test-fail-case – exception
你是否傾向於使用任何嘲諷框架像Mockito? – exception
Mokito不能做它afaik - 但它看起來像PowerMock可能是答案 - 我會看着它。由於 – DaveH