簡體   English   中英

為什么JUnit中的@Rule注釋字段必須是公共的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM