這個問題可以看作是眼前這個C++問題的Java版本:Unit test compile-time error測試在Java預計編譯時錯誤
我正在寫一些實用工具類,亂用在Java泛型和事情變得怪異足以讓我發現自己希望我知道如何爲應該導致編譯器錯誤的代碼編寫單元測試。我知道如何僅在拋出期望的異常時進行單元測試。不知道如何才能通過只有當我得到預期的錯誤。這可能嗎?如果是這樣,怎麼樣?有沒有一個典型的做法?有沒有jUnit的方式?
一個例子是使用一種方法(可以說,一個執行一個演員)以一種應該會導致錯誤的方式。我想要一個只有在調用該方法的代碼產生錯誤時纔會通過的測試。我會和其他不應該導致錯誤的測試一起運行。
作爲另一個例子,讀取Generic And Parameterized Types並注意評論經常說「像ClassClassException失敗」這樣的事情應該會失敗,但會成功。這些看起來像是可以自動化的測試。
這不是測試編譯器。這是爲了測試我寫的通用代碼做了它應該做的事情。
我的直覺告訴我,這超出了編譯器或庫所能做的,並進入了IDE魔術,奇怪的項目配置或靜態代碼分析領域。我真的不知道。我只是想確保代碼導致它應該的錯誤,因爲它不會導致它不應該發生的錯誤。我使用eclipse,ant和jUnit,因此詳細說明如何使用它們可以完成的答案將是完美的。
如果您使用JUnit,您可以這樣做:'@Test(expected = NullPointerException.class)'。 – Pokechu22 2014-09-01 06:34:32
類似[這個問題](http://stackoverflow.com/q/156503/2970947)? – 2014-09-01 06:34:54
這是一個運行時異常。我在這裏討論編譯器錯誤。 – CandiedOrange 2014-09-01 06:35:09