我有一组集成JUnit测试用例,我想在2个或更多单独的spring应用程序上下文中运行。应用程序上下文在配置设置和bean接线方面有所不同。但是,如果我使用JUnit类顶部的 @ContextConfiguration 注释指定应用程序上下文文件名,那么我只能为指定的应用程序上下文运行一次这些测试用例。是否可以使用不同的应用程序上下文运行相同的JUnit测试用例?
另外,我有兴趣在同一个测试运行中为每个应用程序上下文执行一次测试用例 - mvn test。
答案 0 :(得分:2)
将测试代码放在抽象类中,并使用具有不同@ContextConfigurations的子类。见http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/testing.html#testing-examples-petclinic
答案 1 :(得分:1)
您可以使用Maven资源过滤
来使用仅包含特定上下文文件的主测试应用程序上下文文件e.g。
@ContextConfiguration("classpath:test-context.xml")
其中src/main/resources/test-context.xml
是:
<beans>
<import resource="${project.test.context}" />
</beans>
然后运行mvn test -Dproject.test.context=context1.xml
,mvn test -Dproject.test.context=context2.xml
等
如果这样做,您还应在POM中设置默认的maven属性project.test.context
。
顺便说一句,如果这些是集成测试,它们应该按照惯例调用... IT.java而不是... Test.java,并且应该由failsafe运行(使用mvn verify
),而不是万无一失。