1

コードを介してプログラムで @ConfigurationContext を取得および変更する方法は?

有効な xml ファイルを含むデフォルト構成があります。

ここで、特定のテスト ケースに無効な構成を追加して、同じものをテストする必要があります。

コードを介してプログラムで @ConfigurationContext をオーバーライド、取得、および変更する方法は?

前もってありがとう、カシール

4

1 に答える 1

0

免責事項:私のコメントへの返信で別のコメントをしていないので、JUnitを使用していると思います。
あなたがやろうとしていることはあまり意味がないと思います.私の意見では、複数のテストを実行できるようにするために、機能しない構成専用のテストクラスを作成することをお勧めします. でも:

  1. @RunWith(SpringJUnit4ClassRunner.class)テスト クラスにとで注釈を付けます@ContextConfiguration(locations = {"classpath:/working-context.xml"})。このようにして、構成コンテキストを 2 つの方法で取得できます。まず、@Inject ApplicationContext context作業コンテキストを含むフィールドを宣言するだけです。または、テスト クラスimplements ApplicationContextAwareを作成してからpublic void setApplicationContext (ApplicationContext applicationContext). プログラムでコンテキストを変更するために手に入るので、2番目のものを選びます。
  2. a を書き、not-working-context.xmlクラスパスに配置します
  3. 失敗させたいテスト メソッドで、アプリケーション コンテキストをリロードし、context = setApplicationContext(new ClassPathXmlApplicationContext("not-working-context.xml"));必要なすべてのエラーをテストします。
  4. テスト ケースの順序に従うのは良い方法ではありませんが、失敗したテストが最後のテストとして実行されることを確認してください (テストはアルファベット順に実行されます)。これにより、他のテストで作業コンテキストをリロードする必要がなくなります。



最終的に、テスト クラスは次のようになります。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/working-context.xml"})
public class TestClass implements ApplicationContextAware {
  private ApplicationContext context;

  public void setApplicationContext(ApplicationContext context){
    this.context = context;
  }

  //Other tests

  @Test
  public void zFailingTest() {
    context = setApplicationContext(new ClassPathXmlApplicationContext("not-working-context.xml"));
    //your test
  }
}
于 2013-01-17T15:33:28.983 に答える