如何排除某些测试的代码覆盖率

How can I exclude code coverage for certain tests

我正在为我的 PHP 单元测试收集代码覆盖率数据;有些是单元测试,有些是集成测试,检查所有内容(classes 和配置)是否正确连接。

我只想在 运行 进行单元测试时收集代码覆盖率信息,因为应该显示单元测试以覆盖目标中的所有行 class(es) (理想情况下使用 @covers 注释)。集成测试不应显示为覆盖任何内容,但 phpunit 的默认位置似乎是,如果它没有任何 @covers 注释,那么它应该覆盖直接或由每个测试方法间接调用。

请注意,在 phpunit.xml 中使用 <whitelist> 对我没有帮助,因为某些文件可能会被两组测试触及 - 我想记录源自一组的代码覆盖率,同时排除另一个。

我想过几种可能的方法,但 none 对我来说 'clean':

是否有比上述任何可能性更简洁的方法?

到目前为止我发现的最干净的感觉方法是上面概述的第一种方法的变体:在 @covers 注释中将 class 引用到自身:

<?php

namespace FooTestSuite;

/** @covers \FooTestSuite\BarTest */
class BarTest extends \PHPUnit_Framework_TestCase {

    /* ... */

}