php - 以 Clover XML 格式生成代码覆盖率报告 ... PHP 致命错误:无法声明类 ...,因为名称已在
问题描述
我想获取 CodeCov 的 coverage.xml。PHP 8.0.2 PHPUnit 9.5.2 Xdebug 3.0.2
我的课。很简单,就是练习一下代码覆盖率 src/Car.php
<?php
/**
* This class is for car.
*/
class Car
{
public function GetColor()
{
return 'Blue';
}
}
测试文件。 测试/CarTest.php
<?php
include_once __DIR__ .'/../src/Car.php';
use PHPUnit\Framework\TestCase;
/**
* @coversDefaultClass Car
*/
class CarTest extends TestCase
{
/**
* @covers Car::GetColor
*/
public function testCarGoodColor(): void
{
$car = new Car();
$this->assertSame('Blue', $car->GetColor());
}
}
当我进入
./vendor/bin/phpunit tests/ --coverage-clover ./coverage.xml
我收到这条消息:
PHPUnit 9.5.2 by Sebastian Bergmann and contributors.
Runtime: PHP 8.0.2 with Xdebug 3.0.2
Configuration: /Applications/CI-CD/phpunit.xml
. 1 / 1 (100%)
Time: 00:00.187, Memory: 8.00 MB
OK (1 test, 1 assertion)
Generating code coverage report in Clover XML format ... PHP Fatal error: Cannot declare
class Car, because the name is already in use in /Applications/CI-CD/src/Car.php on line 8
Fatal error: Cannot declare class Car, because the name is already in use in /Applications/CI-CD/src/Car.php on line 8
如何用类解决这个问题?
解决方案
非常感谢LazyOne
问题出在
include_once __DIR__ .'/
../src/Car.php';
我用自动加载修复它。此外,我在src/中有index.php,我将其添加为忽略代码覆盖率。
推荐阅读
- c - krb-protos.h 语法错误:可能缺少标识符?
- css - CSS flexbox SASS mixin,不支持 flexbox legacy
- javascript - Underscore(JavaScript Lib) 中的 find 函数和普通的 java-script 函数有什么区别?
- squish - 如何避免在 Squish 中进行 Qt 测试?
- reactjs - 删除反应中的状态对象
- ios - CSS Scroll-Snapping 不断跳过它应该捕捉到的元素之一
- fitnesse - 单机模式退出
- mongodb - 在 mongoDB 集合中查询、投影和排序文档的多个字段
- vba - SubMatches 函数 VBA 中的运行时错误
- javascript - 如何在返回字符串中获取 Observable 值