public class SpringMethodRule extends ObjectSE implements org.junit.rules.MethodRule
SpringMethodRule は、カスタム JUnit 4 MethodRule であり、TestContextManager および関連するサポートクラスとアノテーションを使用して、標準の JUnit テストで Spring TestContext フレームワークのインスタンスレベルおよびメソッドレベルの機能をサポートします。SpringJUnit4ClassRunner とは対照的に、Spring のルールベースの JUnit サポートには、Runner から独立しているため、JUnit の Parameterized などの既存の代替ランナーや MockitoJUnitRunner などのサードパーティランナーと組み合わせることができるという利点があります。
ただし、SpringMethodRule は SpringJUnit4ClassRunner のインスタンスレベルおよびメソッドレベルの機能しかサポートしていないため、SpringJUnit4ClassRunner と同じ機能を実現するには、SpringMethodRule を SpringClassRule と組み合わせる必要があります。
public class ExampleSpringIntegrationTest {
@ClassRule
public static final SpringClassRule springClassRule = new SpringClassRule();
@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();
// ...
} 以下のリストは、現在 SpringMethodRule によって直接または間接的にサポートされているすべてのアノテーションを構成しています。(追加のアノテーションは、さまざまな TestExecutionListener または TestContextBootstrapper 実装によってサポートされる場合があることに注意してください)
注意 : Spring Framework 4.3 以降、このクラスには JUnit 4.12 以上が必要です。
警告 :JUnit ルールの欠点により、SpringMethodRule は TestExecutionListener API の beforeTestExecution() および afterTestExecution() コールバックをサポートしていません。
apply(Statement, FrameworkMethod, Object), SpringClassRule, TestContextManager, SpringJUnit4ClassRunner| コンストラクターと説明 |
|---|
SpringMethodRule() |
| 修飾子と型 | メソッドと説明 |
|---|---|
org.junit.runners.model.Statement | apply(org.junit.runners.model.Statement base, org.junit.runners.model.FrameworkMethod frameworkMethod, ObjectSE testInstance) 提供された base ステートメントに、Spring TestContext フレームワークの インスタンスレベルおよびメソッドレベルの機能を適用します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base,
org.junit.runners.model.FrameworkMethod frameworkMethod,
ObjectSE testInstance)base ステートメントに、Spring TestContext フレームワークの インスタンスレベルおよびメソッドレベルの機能を適用します。 具体的には、このメソッドは、TestContextManager で prepareTestInstance()、beforeTestMethod()、afterTestMethod() メソッドを呼び出します。Spring のタイムアウトと繰り返しが発生する可能性があります。
さらに、このメソッドは、現在の実行環境でテストが有効になっているかどうかを確認します。これにより、一致しない @IfProfileValue アノテーションを持つメソッドが完全に実行されなくなり、TestExecutionListeners で prepareTestInstance() メソッドの実行がスキップされます。
org.junit.rules.MethodRule の apply base - このルールを適用する必要があるベース Statement frameworkMethod - テストインスタンスで呼び出されようとしているメソッド testInstance - 現在のテストインスタンス base を、Spring TestContext フレームワークのインスタンスレベルおよびメソッドレベルの機能でラップするステートメント withBeforeTestMethodCallbacks(org.junit.runners.model.Statement, java.lang.reflect.Method, java.lang.Object, org.springframework.test.context.TestContextManager), withAfterTestMethodCallbacks(org.junit.runners.model.Statement, java.lang.reflect.Method, java.lang.Object, org.springframework.test.context.TestContextManager), withPotentialRepeat(org.junit.runners.model.Statement, java.lang.reflect.Method, java.lang.Object), withPotentialTimeout(org.junit.runners.model.Statement, java.lang.reflect.Method, java.lang.Object), withTestInstancePreparation(org.junit.runners.model.Statement, java.lang.Object, org.springframework.test.context.TestContextManager), withProfileValueCheck(org.junit.runners.model.Statement, java.lang.reflect.Method, java.lang.Object)