Maven 测试套件的增量运行

Maven 测试套件的增量运行,maven,continuous-integration,infinitest,continuous-testing,pitest,Maven,Continuous Integration,Infinitest,Continuous Testing,Pitest,我们有一个大型项目,在testsuite中有数千个测试,完整的testsuite运行需要很长时间 我正在寻找一个工具,可以集成到Maven构建中,只运行那些可能受到影响的测试(知道每个测试的代码覆盖率),因为一些覆盖的代码有变化 我在谷歌上搜索了一下,发现了一些类似的东西,但并不完美: Ekstazi看起来正是这样,但它与TestNG(在testsuite中使用)不能开箱即用,而且它不是开源的 Infinitest似乎主要关注IDE集成——是否可以只按需运行测试(就像mvn Infinites

我们有一个大型项目,在testsuite中有数千个测试,完整的testsuite运行需要很长时间

我正在寻找一个工具,可以集成到Maven构建中,只运行那些可能受到影响的测试(知道每个测试的代码覆盖率),因为一些覆盖的代码有变化

我在谷歌上搜索了一下,发现了一些类似的东西,但并不完美:

  • Ekstazi看起来正是这样,但它与TestNG(在testsuite中使用)不能开箱即用,而且它不是开源的
  • Infinitest似乎主要关注IDE集成——是否可以只按需运行测试(就像
    mvn Infinitest
  • PIT并不是我想要的,但它还需要分析每个测试的覆盖率
记住(最后一次)git提交的测试覆盖率并针对最后一次代码更改运行测试也是非常有用的


欢迎对以上内容提出进一步建议和意见。

据我所知,Infinitest没有提供相应的Maven插件,因此无法使用它。你可以考虑创建它,为世界做出不可估量的贡献。 就我所见,它提供了相当可靠的API,所以编写插件应该不是什么大问题。您可能想先看看接口。如果您使用的是CI环境,您可能希望直接从
git diff--name only HEAD~1
为无限大文件提供文件列表,这将生成在最新提交中更改的文件列表(例如,如果您针对每次提交运行构建)

UPD。似乎有一种解决方法涉及maven exec插件在maven构建中显式运行Infinitest:我建议使用以下命令指定显式构建阶段:

执行:重要的是要记住一个插件可能有多个目标。每个目标可能有一个单独的配置,甚至可能将插件的目标绑定到一个不同的阶段。执行配置插件目标的执行


你所说的很长时间是什么意思?您是否使用CI解决方案?通常,您应该运行整个单元测试套件来捕获您可能不知道的内容……是的,但它从IDE运行,或者作为一个独立的应用程序运行,但仍然没有作为Maven插件捆绑在一起——因此直接通过POM定义在Maven build中启动它是可能的。然而,我找到了一个解决办法(添加到我的答案中)。