【问题标题】:Generate new code coverage for a single file without clearing all other coverage reports in PHPUnit为单个文件生成新的代码覆盖率,而不清除 PHPUnit 中的所有其他覆盖率报告
【发布时间】:2012-09-28 14:21:32
【问题描述】:

首先是问题: 在 PHPUnit 3.5 中,有没有一种方法可以为单个测试生成覆盖率报告,而不会覆盖整个测试套件的报告。 IE。只更新受影响文件的覆盖率报告?我仍然希望输出到同一个文件夹。

对于那些想要了解一些背景知识的人:

使用 PHPUnit 3.5,我有一个项目需要追溯地包含单元测试。现在为了知道哪些类仍然需要测试,我运行了整个测试套件并生成了一个 html 覆盖率报告。因为运行完整的套件需要一些时间,所以我想避免每次我想检查哪些测试还需要实现时都运行它。但同时我也想要我目前正在处理的单元测试的覆盖率报告,这样我就可以确保我正在执行一个类中的每一行代码(这当然来回非常快,因此运行整个套件只是为了生成此报告是没有意义的)。我可以为单个测试生成报告,也可以为整个套件生成报告。但我正在寻找的是一种混合型,它允许我首先为整个套件生成一个报告,然后只使用我当前正在进行的测试的覆盖率信息更新报告。

我已经设置了一个 ruby​​ 脚本,它将简单地为我正在处理的当前文件运行测试并生成关于该文件的覆盖率报告。但是这样工作时,它总是会重置所有其他文件的覆盖率报告,即使测试没有在这些类中执行任何操作。

有什么想法吗?

【问题讨论】:

    标签: unit-testing phpunit code-coverage


    【解决方案1】:

    这在本机是不可能的,但如果你能弄清楚如何从 XML 覆盖数据文件中重新生成 HTML,你可以将脚本修改为

    1. 将完整运行的覆盖范围 XML 复制到暂存区。
    2. 运行单个测试时,将新的 XML 文件复制到该区域。这不一定会合并涵盖同一类的两个测试的覆盖率,但我从您的描述中猜测您正在涵盖每个测试的一个类,反之亦然。
    3. 从 XML 重建 HTML。您也许可以通过查看源代码来弄清楚如何做到这一点,但我怀疑这也可能是原生的。

    【讨论】:

    • 谢谢,虽然有点遗憾,正确的答案是不可能的:(如果我知道如何实现你的建议,我会回复。
    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 2014-04-16
    • 2021-06-26
    • 1970-01-01
    • 2014-09-01
    • 2018-05-29
    相关资源
    最近更新 更多