JUnit4.7から@Ruleアノテーションが追加されました。@Ruleアノテーションは、org.junit.rules.MethodRuleインターフェースのサブクラスによって定義された振る舞いをテストメソッドに追加します。MethodRuleの組み込み実装クラスMethodRuleの具象クラスとして、以下のクラスが提供されています。設定時間でテストを失敗させるテストケースでは、JUnitにより提供されているこれらのRuleを使用することもできますし、それを拡張して新たなルールを作成することもできます。自身で新しいRuleを作成することもできます。MethodRuleの中身はapplyメソッドが定義されています。具象クラスではこのapplyメソッドを実装します。雰囲気としてはAOPですね。target);}methodが実行しているテストメソッドで、targetがテスト対象のオブジェクトです。Statementにより振る舞いの変更を行います。オブジェクトの状態が不正な場合にテストを失敗させるルールです。こんな感じで実装されています。メソッドをオーバーライドして検証処理を追加することで、テストメソッドに振る舞いを追加することになります。以下の例では、Verifierにてロガーがnullかどうかの検証処理をテストメソッドに追加します。}}2つのテストメソッドは、追加した検証ルールにより(hogeというロガーは無いため、verify()による検証が失敗するため)失敗となります。ファイルやフォルダを作成できるようにするRuleです。テストの成功や失敗に関わらず、各テスト終了後には作成したファイルやフォルダが削除されることが保障されます。}}以下の様な一時ファイルが作成され、テストメソッド毎に削除されます。こんな実装になってます。