首页 > 解决方案 > 以 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

如何用类解决这个问题?

标签: phpnamespacesphpunitcode-coveragexdebug

解决方案


非常感谢LazyOne

问题出在

include_once __DIR__ .'/

../src/Car.php';

我用自动加载修复它。此外,我在src/中有index.php,我将其添加为忽略代码覆盖率。


推荐阅读