32

JUnit テスト ケースでは、 によって注釈が付けられたフィールドは@Rulepublic である必要があります。これは、一般的な Java コーディング規約を破っています (すべてのクラス メンバー変数を public にすることはできません)。JUnit がこれを必要とするのはなぜですか?

ドキュメント@Rule: https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/Rule.java

4

1 に答える 1

33

JUnit ランナーは、ルールを実行するためにフィールドに反射的にアクセスする必要があります。フィールドがプライベートの場合、アクセスは をスローしIllegalAccessExceptionます。

別のオプションは、ルールを実行する前に、ランナーにアクセスをプライベートからパブリックに変更させることでした。ただし、セキュリティ マネージャが有効になっている場合は、問題が発生する可能性があります。

テストクラスに public フィールドを持たないようにしたい場合は、JUnit 4.11 以降、Rulewith@Ruleまたはを返すメソッドにアノテーションを付けることができます@ClassRule

于 2013-01-15T10:24:44.410 に答える