8

DRY のために、親クラスで ContextConfiguration を定義し、すべてのテスト クラスにそれを継承させたいと考えています。

親クラス:

package org.my;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/org/my/Tests-context.xml")
public abstract class BaseTest {

}

子クラス:

package org.my;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(inheritLocations = true)
public class ChildTest extends BaseTest {

    @Inject
    private Foo myFoo;

    @Test
    public void myTest() {
          ...
    }
}

ContextConfiguration docs によると、親の場所を継承できるはずですが、機能させることができません。Spring はまだデフォルトの場所 ( ) でファイルを探しており、/org/my/ChildTest-context.xml見つからない場合は barfs を探しています。私は運がないので、次のことを試しました:

  • 親クラスを具体化する
  • 親クラスへのノーオペレーション テストの追加
  • 注入されたメンバーを親クラスにも追加する
  • 上記の組み合わせ

私はスプリングテスト 3.0.7 と JUnit 4.8.2 を使用しています。

4

1 に答える 1

13

@ContextConfiguration(inheritLocations = true)子クラスの を削除します。inheritLocationsデフォルトでは true に設定されています。

場所を指定せずにアノテーションを追加する@ContextConfiguration(inheritLocations = true)ことで、デフォルトのコンテキストである を追加してリソースの場所のリストを拡張するように Spring に指示します/org/my/ChildTest-context.xml

次のようなものを試してください:

package org.my;

@RunWith(SpringJUnit4ClassRunner.class)
public class ChildTest extends BaseTest {

    @Inject
    private Foo myFoo;

    @Test
    public void myTest() {
          ...
    }
}
于 2013-01-18T17:34:19.663 に答える