public class SpringMethodRule extends ObjectSE implements 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
は、テストクラスのインスタンス化の直後ではなく、@Before
ライフサイクルメソッドの前にテストインスタンスを準備します。さらに、SpringMethodRule
は、TestExecutionListener
API の beforeTestExecution()
および afterTestExecution()
コールバックをサポートしていません。
apply(Statement, FrameworkMethod, Object)
, SpringClassRule
, TestContextManager
, SpringJUnit4ClassRunner
コンストラクターと説明 |
---|
SpringMethodRule() |
修飾子と型 | メソッドと説明 |
---|---|
Statement | apply(Statement base, FrameworkMethod frameworkMethod, ObjectSE testInstance) 提供された base ステートメントに、Spring TestContext フレームワークの インスタンスレベルおよびメソッドレベルの機能を適用します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public Statement apply(Statement base, FrameworkMethod frameworkMethod, ObjectSE testInstance)
base
ステートメントに、Spring TestContext フレームワークの インスタンスレベルおよびメソッドレベルの機能を適用します。 具体的には、このメソッドは、TestContextManager
で prepareTestInstance()
、beforeTestMethod()
、afterTestMethod()
メソッドを呼び出します。Spring のタイムアウトと繰り返しが発生する可能性があります。
さらに、このメソッドは、現在の実行環境でテストが有効になっているかどうかを確認します。これにより、一致しない @IfProfileValue
アノテーションを持つメソッドが完全に実行されなくなり、TestExecutionListeners
で prepareTestInstance()
メソッドの実行がスキップされます。
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)