1

junit テスト ケースの実行時にテスト データを作成したいと考えています。そのアクティビティの一環として、テスト データを作成/削除/更新する一連のデータ フィクスチャとその周りの実装を作成することを選択しました。これらは、すべての Junit クラスの @before および @After メソッドから呼び出されます。@before はテスト データをセットアップし、@after はテスト データを破棄します。

この実装はすべて「テスト」パッケージ内に記述し、メイン クラスを @component としてマークし、これらの新しいクラスを @autowired しました。ただし、junit テストを実行すると、これらの新しいクラスのインスタンスを作成できないため、オートワイヤが機能していないようです。

test-config.xml 内に次の構成を追加する以外に、自動配線の前に何をしなければならないかわかりません

<context:component-scan base-package="test">
</context:component-scan>

Spring 3.x と Junit 4 を使用しています。

- - - - -詳しくは - - - - - - -

//ビジネスの実装:

//ファイルの場所: src/main/java/com/abc/prq

package com.abc.pqr

@Service("myservice")
public class MyService{

}

//Myservice クラスの Junit テスト:

//ファイルの場所: src/test/java/com/abc/pqr

 package com.abc.pqr;
 @RunWith(SpringJUnit4ClassRunner.class)
 @ContextConfiguration(locations={"classpath:/META-INF/spring/test-Config.xml"})
 public class MyServiceTest {
     @Autowired  
     private ABC abc;
 }

//テスト データを作成/削除/更新するためのデータ フィクスチャ

//ファイルの場所: src/test/java/com/abc/pqr/datafixtures

 package com.abc.pqr.datafixtures
 @Component("abc") 
 public class ABC{
     public void create(){
     } 
     public void remove(){
     } 
     public void update(){
     }
 }
4

1 に答える 1

2

この問題は、春のテストのコンテキストで適切なパッケージをスキャンしていないことが原因であると思います。ファイルは次のtest-Config.xmlようになります。

<context:annotation-config />
<context:component-scan base-package="com.abc.pqr.datafixtures" /> 

お役に立てれば。

于 2012-11-26T12:45:21.187 に答える