我有一个Java项目,它具有分层结构。每次提交时,Hudson构建都会与所有测试用例一起运行,以确保代码不会被新的更改破坏。但由于正在运行持久性(Hibernate)层的测试用例,这可能需要相当长的时间。此外,还有一个声纳建造,每天晚上运行。
现在我正在寻找一种优化测试运行的方法。我想从Hudson构建中删除持久层测试,只在Sonar中运行它。现在它应该有两个不同的测试套件(概要文件)。
非常感谢任何建议。
似乎您希望使用JUnit类别-https://weblogs.java.net/blog/johnsmart/archive/2010/04/25/grouping-tests-using-junit-categories-0
然后,您可以将构建服务器配置为在不同时间运行特定类别
更多信息请点击此处-https://github.com/junit-team/junit/wiki/Categories
我认为您需要分为两个测试阶段:
- 单元,用于快速运行的测试
- 集成,对于Hibernate风格较慢的
单元测试由Surefire插件运行,集成测试由Failsafe 运行
这些测试在maven标准构建生命周期的不同阶段运行,因此您可以将集成测试设置为仅在SONAR构建上运行。
如果您使用的是Junit 4.8或更高版本,则可以使用Junit Categories
来分离测试,并仅运行特定类别的测试。
有关更多信息,请参阅:
- junit团队GitHub存储库上的Wiki页面:junit4,Categories
- DZone教程:更深入地了解JUnit类别
- Maven Surefire插件指南:使用JUnit类别