2013-01-15 43 views

回答

27

的JUnit運行需要反思訪問現場運行規律。如果該字段是私密的,則訪問將拋出IllegalAccessException

另一種選擇是讓運行者在運行規則之前將私人訪問權限修改爲公共訪問權限。但是,如果啓用了安全管理器,則可能會導致問題。

如果你想避免在您的測試類的公共字段,你可以從JUnit的4.11註釋方法,返回一個Rule@Rule@ClassRule

+8

+1您也可以使用@Rule註解一個方法,這樣可以避免這個問題。你應該把這個添加到你的答案中。 –

+0

謝謝馬修,我不知道。 4.11顯然是新功能。 –

+0

@KErlandsson - 你完全確定嗎?這就是JUnit API文檔所陳述的:「一個字段必須是公共的,而不是靜態的,並且是TestRule的子類型(首選)或MethodRule」 – dziki

相關問題