使用 2 个单独的 spring 应用程序上下文运行 Junit 测试用例
我有一组集成 JUnit 测试用例,我想在 2 个或更多单独的 Spring 应用程序上下文下运行。应用程序上下文在配置设置和 bean 连接方面有所不同。但是,如果我使用 JUnit 类顶部的 @ContextConfiguration 注释指定应用程序上下文文件名,那么我只能针对指定的应用程序上下文运行这些测试用例一次。是否可以在不同的应用程序上下文中运行相同的 JUnit 测试用例?
另外,我有兴趣在同一测试运行 - mvn test 中为每个应用程序上下文执行一次测试用例。
I have a set of integration JUnit test cases that I want to run under 2 or more separate spring application contexts. Application contexts differ in configuration settings and bean wirings. However, if I specify the application context file name using the @ContextConfiguration annotation at the top of the JUnit classes then I am only able to run these test cases once for the specified application context. Is it possible to run the same JUnit test cases with different application contexts?
Also, I am interested to execute the test cases once for each application context in the same test run - mvn test.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将测试代码放入抽象类中,并使用具有不同 @ContextConfigurations 的子类。请参阅http: //static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/testing.html#testing-examples-petclinic
Put your test code in an abstract class and use subclasses with different @ContextConfigurations. See http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/testing.html#testing-examples-petclinic
您可以通过 Maven 资源过滤来使用仅包含特定上下文文件的主测试应用程序上下文文件,
例如
其中 src/main/resources/test-context.xml 是:
然后运行 mvn test -Dproject.test.context=context1.xml,mvn test -Dproject .test.context=context2.xml 等。
如果这样做,您还应该在 POM 中设置默认的 Maven 属性
project.test.context
。顺便说一句,如果这些是集成测试,则按照惯例,它们应该被称为 ...IT.java 而不是 ...Test.java,并且应该由故障安全运行(使用
mvn verify
),不确定。You can use a master test application context file that just includes a specific context file by using Maven resource filtering
e.g.
where
src/main/resources/test-context.xml
is:Then run
mvn test -Dproject.test.context=context1.xml
,mvn test -Dproject.test.context=context2.xml
etc.If you do that, you should also set a default maven property
project.test.context
in your POM.By the way, if these are integration tests, they should by convention be called ...IT.java rather than ...Test.java, and should be run by failsafe (using
mvn verify
), not surefire.