我正在开发一个项目,其中包含许多未包含在测试中的遗留代码。
有没有办法设置集成服务器来检查所有新提交的测试数量是否最少(例如,覆盖率> 70%)?
基本上,我看到两个选项:
我更喜欢选项1,因为它会强制遗留代码中的更改进行单元测试。这应该会增加整体测试覆盖率。
现在我们使用Jenkins作为CI服务器,使用JaCoCo作为测试覆盖。 Maven用于构建项目,SVN是我们的主要源代码控制。
答案 0 :(得分:1)
我知道您可以配置Jenkins以验证在提交过程中至少有一个测试文件。这不能保证良好的测试覆盖率,但至少你会知道存在某种与测试相关的变化。
答案 1 :(得分:0)
对于选项2,您可以使用Jenkins JaCoCo plugin跟踪每个构建的代码覆盖率,并根据覆盖率指标将构建结果设置为传递或失败。
我也更喜欢选项1,但我不知道Jenkins这样做的内置方式。对于覆盖数据进行后处理并将其与SVN修订信息相结合应该相当容易(至少在类级别),例如:
这不是一个完整的解决方案,对于未被测试覆盖的新方法或行变得更加棘手。给我一个新的Jenkins插件的想法;-)
答案 2 :(得分:0)
一些覆盖工具(如cobertura)支持排除包裹。这样,您可以排除所有旧代码(假设它可以进行模式匹配)并让cobertura仅检查新代码(涵盖新提交)。
我希望这会有所帮助。
答案 3 :(得分:0)
我已经构建了一个完全正确的工具
https://github.com/exussum12/coverageChecker
传入分支的差异和测试的封面测试输出。该工具可以确定diff中哪些行也位于三叶草文件中。并且如果小于某个百分比
则失败使用
bin/diffFilter --phpunit diff.txt clover.xml 70
当测试覆盖少于70%的差异时失败构建
我可以根据需要添加其他格式
编辑
我添加了jacoco
Bin/diffFilter --jacoco diff.txt jacoco.xml