[英]Why @Rule annotated fields in JUnit has to be public?
在JUnit測試用例中, @Rule
注釋的@Rule
必須是公共的。 它打破了常見的Java編碼約定(所有類成員變量都不應該是公共的)。 為什么JUnit需要這個?
@Rule
文檔: https : //github.com/junit-team/junit/blob/master/src/main/java/org/junit/Rule.java
JUnit運行器需要反射訪問該字段以運行規則。 如果該字段是私有的,則訪問將拋出IllegalAccessException
。
另一種選擇是讓跑步者在運行規則之前修改從私人到公共的訪問。 但是,如果啟用了安全管理器,則可能會導致問題。
如果要避免在測試類中使用公共字段,可以從JUnit 4.11注釋使用@Rule
或@ClassRule
返回Rule
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.