我目前正在嘗試爲小型圖書館建立一套或多或少的完整單元測試。由於我們希望允許不同的實現存在,我們希望這組測試是(a)通用的,以便我們可以重新使用它來測試不同的實現,並且(b)儘可能完整。對於(b)部分,我想知道是否有任何用於測試枚舉類型的最佳做法。所以例如我有一個枚舉如下:如何測試枚舉類型?
public enum Month {
January,
February,
...
December;
}
這裏我想確保所有的枚舉類型真的存在。這甚至是必要的嗎?目前我使用Hamcrests assertThat
像下面的例子:
assertThat(Month.January, is(notNullValue()));
一個失蹤「一月」枚舉會導致其中一個可以通過創建缺少的枚舉類型確定一個編譯時錯誤。
我使用Java在這裏,但如果你的答案是不同的語言,我不介意..
編輯:
由於mkato和馬克·希思雙雙指出,測試可枚舉沒有必要,因爲編譯器在您使用不存在的枚舉類型時不會編譯。但我仍然想測試這些枚舉,因爲我們想構建一個獨立的TCK類test.jar,它將在不同的實現上運行相同的測試。所以我的問題更像是:什麼是測試枚舉類型的最好方法?
想着它之後多一點,我改變了Hamcrest聲明以上:
assertThat(Month.valueOf("January"), is(notNullValue()));
這種說法現在拋出一個NPE月份的時候是不是有(還)。這種方法有什麼問題嗎?
我有一個枚舉,有一個方法,我想測試,我是單元測試的新手,無法找出一種方法來編寫該方法的測試用例,請您提供一個示例或幫助做到這一點。 – dirtydexter 2014-10-31 12:16:19
如果「assertThat(Month.January,is(notNullValue()));」在OP的問題中,對於你來說還不夠,我認爲你最好把它當作一個單獨的問題,並提供一個你想要測試的例子。聽起來像你可能需要幫助JUnit本身。 – aberrant80 2014-11-03 02:42:08