这是一个ug,但在PPUnit 3.6中工作。 我们已经有了我们自己的习俗测试案例基础类别,而其他所有情况都是如此。 如果在档案中添加到白名单时确实如此,那么你就能够利用一个假冒测试案例来处理这一部分。
第一,<代码>格列斯陷阱.php> 试验基地:在需要时有太多时间来填满内部档案,以在以后添加。 其次,拟进行的第一次测试通过<守则> 测试结果代码>对代码覆盖面进行过滤时增加了这些档案。
abstract class BaseTestCase extends PHPUnit_Framework_TestCase
{
private static $_codeCoverageFiles = array();
public static function addDirectoryToCodeCoverageWhitelist($path) {
self::addFilesToCodeCoverageWhitelist(self::getFilesForDirectory($path));
}
public static function addFileToCodeCoverageWhitelist($path) {
self::addFilesToCodeCoverageWhitelist(array($path));
}
public static function addFilesToCodeCoverageWhitelist(array $paths) {
self::$_codeCoverageFiles = array_merge(self::$_codeCoverageFiles, $paths);
}
public static function getFilesForDirectory($path) {
$facade = new File_Iterator_Facade;
return $facade->getFilesAsArray($path, .php );
}
private static function setCodeCoverageWhitelist(PHP_CodeCoverage $coverage = null) {
if ($coverage && self::$_codeCoverageFiles) {
$coverage->setProcessUncoveredFilesFromWhitelist(true); // pick your poison
$coverage->filter()->addFilesToWhitelist(self::$_codeCoverageFiles);
self::$_codeCoverageFiles = array();
}
}
public function runBare() {
self::setCodeCoverageWhitelist($this->getTestResultObject()->getCodeCoverage());
parent::runBare();
}
}
<>Update: 凡是使用黑名单来保持框架班级的人,不像我们所做的那样,展示失败的痕迹,将以下方法添加到上述班级,并将其从<条码>boot锁.php>。 这要求从PHP5.3中获取。
public static function ignoreDirectoryInStackTraces($path) {
ignoreFilesInStackTraces(self::getFilesForDirectory($path));
}
public static function ignoreFileInStackTraces($path) {
ignoreFilesInStackTraces(array($path));
}
public static function ignoreFilesInStackTraces($files) {
static $reflector = null;
if (!$reflector) {
PHPUnit_Util_GlobalState::phpunitFiles();
$reflector = new ReflectionProperty( PHPUnit_Util_GlobalState , phpunitFiles );
$reflector->setAccessible(true);
}
$map = $reflector->getValue();
foreach ($files as $file) {
$map[$file] = $file;
}
$reflector->setValue($map);
}