查找覆盖相同代码的冗余单元测试

时间:2017-01-31 15:12:20

标签: php unit-testing phpunit

问题: 我有一个庞大的代码库,有很多测试。 在添加测试时,我意识到其中的一些现有单元测试覆盖相同的类/功能两次或更多次。 这些测试位于完全不同的位置,因此很难看出他们测试相同的代码。

此代码中没有@covers注释。所以我不能用它们来识别"冗余测试"代码。

PHPUnit可以处理许多命令行标志。使用--report-useless-tests进行无用的测试。 如果会有一些--report-redunant-tests会很棒,但我可以看到没有这样的选择。

问题: 你知道我怎样才能找出哪些代码被测试了两次以及哪个单元测试负责这些测试?

背景 在删除冗余测试时,我想声明以下内容。

  1. 负责测试的代码应尽可能完整。
  2. 如果某些功能发生变化,理想情况下您只需调整一个测试用例。
  3. 减少整个单元测试套件的执行时间。

1 个答案:

答案 0 :(得分:2)

检测“冗余”测试真的很困难。即使多个测试通过相同的代码,他们也可以测试不同的场景,因此所有这些都是相关的。但是,我可以看到多次测试如何减慢您的过程。

我的建议是查看coverage-*选项。运行覆盖率报告(例如HTML报告)允许您浏览代码并告诉您每个测试涵盖哪些行/类。如果您希望自动化,查看其他类型的报告并从中提取所需的数据,则可以手动使用。

但是,一个好的起点是:

phpunit --coverage-html /tmp/coverage
祝你好运!

相关问题