【问题标题】:Finding redundant unit tests covering the same code查找覆盖相同代码的冗余单元测试
【发布时间】:2017-06-17 02:11:58
【问题描述】:

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

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

PHPUnit 可以处理很多命令行标志,例如--report-useless-tests 的无用测试。 如果有一些--report-redunant-tests 那就太好了,但我可以看到没有这样的选项。

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

背景: 在删除冗余测试时,我想断言以下内容。

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

【问题讨论】:

    标签: php unit-testing phpunit


    【解决方案1】:

    检测“冗余”测试真的很困难。即使多个测试通过相同的代码,它们也可以针对不同的场景进行测试,因此它们都是相关的。但是,我可以看到进行多项测试会如何减慢您的流程。

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

    但是,一个好的起点是:

    phpunit --coverage-html /tmp/coverage
    

    祝你好运!

    【讨论】:

    • 非常感谢。当然,他们可能会测试不同的场景,我一开始并没有想到 :(。但我想至少尝试一下并了解什么测试可能“真正”过时。但是,是的,可能很难分类正确。我将看看不同的覆盖选项。PHP 选项看起来最有希望。
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多