web-dev-qa-db-ja.com

@RunWith(SpringJUnit4ClassRunner.class)を使用して、ApplicationContextオブジェクトにアクセスできますか?

私は以下を使用するSpringテストを持っています:

@RunWith(SpringJUnit4ClassRunner.class)

Springテストの基本クラスから拡張された古いテスト方法とは異なり、@ContextConfigurationを使用してSpringによってロードされたApplicationContextにアクセスする明確な方法はないようです。

テストメソッドからApplicationContextオブジェクトにアクセスするにはどうすればよいですか?

ありがとう!

12
egervari

Springドキュメントの 統合テスト セクションから

@Autowired ApplicationContext

ApplicationContextAwareインターフェースを実装する代わりに、フィールドまたはセッターメソッドの@Autowiredアノテーションを介してテストクラスのアプリケーションコンテキストを挿入できます。例えば:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTest {

  @Autowired
  private ApplicationContext applicationContext;

  // class body...
}
13
Mark

私はこれを使用します:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MyClassTest
{
}

プロジェクトビルドパスに移動します-> Source ->applicationContext.xmlの場所を追加します

私はMavenを使用しているので、applicationContext.xmlsrc/main/resourcesの下にあります。

このメソッドを使用する場合、たとえば次のようにテストするために複数のapplicationContextを持つことができます。

@ContextConfiguration("classpath:applicationContext_Test.xml")

または

@ContextConfiguration("classpath:applicationContext_V01.xml")
3
nizar ouerghi

ApplicationContextの@Autowired属性を追加します

@Autowired ApplicationContext applicationContext;
3
Dave G