我们有一个大型项目,在测试套件中有数千个测试,完整的测试套件运行需要很长时间。
我正在寻找一种工具,我可以集成在Maven构建中,只运行那些可能受到影响的测试(知道每个测试的代码覆盖率),因为一些被覆盖的代码有变化。
我在谷歌上搜索了一下,发现了一些类似的东西,但不是一个完美的匹配:
- Ekstazi http://www.ekstazi.org/看起来就是这样,但它不能与TestNG一起开箱即用(在测试套件中使用),并且它是不是开源的
- Infinitest https://infinitest.github.io/似乎主要关注IDE集成-是否有可能仅按需运行测试(就像
mvn infinitest
一样)? - PIT http://pitest.org/不完全是我要找的,但它也需要分析每个测试的覆盖率
记住(最后)git提交的测试覆盖率,并根据最后的代码更改运行测试,这将非常有用。
欢迎对以上内容提出进一步的建议和意见
据我所知,Infinitest不提供相应的Maven插件,因此不可能使用它。你可以考虑创建它,为世界做出无价的贡献。
在我看来,它提供了相当可靠的API,所以写一个插件应该不是一个大问题。你可能想先看看InfinitestCore的界面。如果您使用的是CI环境,您可能希望直接从git diff --name-only HEAD~1
中为Infinitest提供文件列表,它将生成最近一次提交中更改的文件列表(例如,如果您针对每次提交运行构建)。
乌利希期刊指南。似乎有一个涉及Maven -exec-plugin的解决方案可以在Maven构建中显式运行Infinitest:您可以从命令行或m2eclipse的Maven中运行'mvn exec:exec'构建启动器以针对项目运行Infinitest。我建议在POM中使用executions
元素指定应该运行的显式构建阶段:
执行:重要的是要记住,一个插件可能有多个目标。每个目标可能有一个单独的配置,甚至可能将一个插件的目标完全绑定到不同的阶段。执行配置插件目标的执行。