2012-03-16 9 views
2

私はJUnitといくつかの統合テストを行っています。私は、私が注入したいいくつかのテンプレートエンティティを宣言するxmlファイルを持っています。すべてのテストで、私は新しいテスト・コンテキストが必要です。つまり、テストは他のテストと依存する必要はありません。setUp()これらのエンティティをデフォルトの開始値で '再初期化'する必要があります。コンテキストを再初期化せずにSpring ApplicationContextをリフレッシュすることは可能ですか?

私はリロードによって達成できますが、この方法では@Autowiredアノテーションを使用できません。

@Before 
public void setUp(){   
    ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:entityTemplates-Context.xml"); 
    homeA = (Home)ctx.getBean("homeA"); 
} 

これらのエンティティにはまだ@Autowiredを使用する方法がありますか?

答えて

2

Springの統合テストのサポートを見てきましたか?

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/testing.html

私のチームは、私たちが春のコンテナを必要とする当社の統合テストのためにこれを使用しています。テストごとに新しいコンテキストが得られますが、テストが大幅に遅くなります。

+0

おかげで、私も春・テストを使用して、いくつかの盗聴だけ見つかった「@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)」の後、それは、仕事をしていませんコンテキスト全体をリロードしますが、遅くなりますが、統合テストのためだけです。 – isah

0

あなたはこのようにそれを手動でも行うことができます。

... 
    @Autowired 
    HomeA homeA; 

    @Before 
    public void setUp() { 
    // configures this test instance as a regular spring bean 
    ctx.getAutowireCapableBeanFactory().autowireBean(this); 

    // here homeA is available 
    } 
    ... 
関連する問題