JUnit テスト ケースでは、 によって注釈が付けられたフィールドは@Rule
public である必要があります。これは、一般的な Java コーディング規約を破っています (すべてのクラス メンバー変数を public にすることはできません)。JUnit がこれを必要とするのはなぜですか?
ドキュメント@Rule
: https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/Rule.java
JUnit テスト ケースでは、 によって注釈が付けられたフィールドは@Rule
public である必要があります。これは、一般的な Java コーディング規約を破っています (すべてのクラス メンバー変数を public にすることはできません)。JUnit がこれを必要とするのはなぜですか?
ドキュメント@Rule
: https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/Rule.java
JUnit ランナーは、ルールを実行するためにフィールドに反射的にアクセスする必要があります。フィールドがプライベートの場合、アクセスは をスローしIllegalAccessException
ます。
別のオプションは、ルールを実行する前に、ランナーにアクセスをプライベートからパブリックに変更させることでした。ただし、セキュリティ マネージャが有効になっている場合は、問題が発生する可能性があります。
テストクラスに public フィールドを持たないようにしたい場合は、JUnit 4.11 以降、Rule
with@Rule
またはを返すメソッドにアノテーションを付けることができます@ClassRule
。