Symfony 4-PhpUnit代码覆盖率报告未完成

问题描述

下午好,

我尝试为我的应用程序实现测试,当我检查代码覆盖率时,PhpUnit返回所有类的所有测试,但Controller目录中没有测试。但是,在代码覆盖率报告中,将引用所有类。

PhpUnit 配置:

<?xml version="1.0" encoding="UTF-8"?>

<!-- https://phpunit.readthedocs.io/en/latest/configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="bin/.phpunit/phpunit.xsd"
         backupGlobals="false"
         colors="true"
         bootstrap="vendor/autoload.php"
>
    <php>
        <ini name="error_reporting" value="-1" />
        <server name="APP_ENV" value="test" force="true" />
        <server name="SHELL_VERBOSITY" value="-1" />
        <server name="SYMFONY_PHPUNIT_REMOVE" value="" />
        <server name="SYMFONY_PHPUNIT_VERSION" value="7.5" />
    </php>

    <testsuites>
        <testsuite name="Project Test Suite">
            <directory>tests</directory>
            <exclude>tests/Controller/Controller</exclude>
        </testsuite>
    </testsuites>

    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory>src/Controller</directory>
            <directory>src/Data</directory>
            <directory>src/Data</directory>
            <directory>src/Data</directory>
            <directory>src/Entity</directory>
            <directory>src/Entity</directory>
            <directory>src/Service</directory>
        </whitelist>
    </filter>

    <listeners>
        <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
    </listeners>
</phpunit>

编辑:“排除” XML标记不是问题。我添加了此代码是为了防止在启动测试时发出警告,因为“抽象”类ControllerTest被所有TestController类继承,并且不包含测试。

TestProductController类:

<?php

namespace App\Tests\Controller;

use App\Tests\Controller\Controller\ControllerTest;
use PHPUnit\Framework\ExpectationFailedException;
use SebastianBergmann\RecursionContext\InvalidArgumentException;
use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
use Symfony\Component\Routing\Exception\InvalidParameterException;
use Symfony\Component\Routing\Exception\MissingMandatoryParametersException;
use Symfony\Component\Routing\Exception\RouteNotFoundException;
use Symfony\Component\Routing\Router;

class TestProjectController extends ControllerTest
{
    /**
     * @var Router
     */
    private $router;

    /**
     * @return void
     *
     * @throws ServiceCircularReferenceException
     * @throws ServiceNotFoundException
     */
    public function setUp(): void
    {
        $this->router = static::$kernel->getContainer()->get('router');
    }

    /**
     * @return void
     *
     * @throws ExpectationFailedException
     * @throws InvalidArgumentException
     * @throws ServiceCircularReferenceException
     * @throws ServiceNotFoundException
     * @throws InvalidParameterException
     * @throws MissingMandatoryParametersException
     * @throws RouteNotFoundException
     */
    public function testProjectListAction()
    {
        $client = static::createClient();

        $client->request('GET',$this->router->generate('project_list'));

        $this->assertEquals(401,$client->getResponse()->getStatusCode());

        $client->request('GET',$this->router->generate('project_list'),[],['HTTP_Authorization' => self::getToken()]);
    }
}

PhpUnit 代码覆盖率报告:

Code Coverage Report:    
  2020-08-12 10:16:13    

 Summary:                
  Classes: 55.56% (5/9)  
  Methods: 87.18% (34/39)
  Lines:   93.67% (74/79)

\App\Data\Data::App\Data\Data\AbstractData
  Methods: 100.00% ( 3/ 3)   Lines: 100.00% (  4/  4)
\App\Data\Data::App\Data\Data\User
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 14/ 14)
\App\Data\Exception\Email::App\Data\Exception\Email\EmailInvalidFormatException
  Methods: 100.00% ( 1/ 1)   Lines: 100.00% (  2/  2)
\App\Data\ValueObject::App\Data\ValueObject\Email
  Methods: 100.00% ( 3/ 3)   Lines: 100.00% (  8/  8)
\App\Entity\Entity::App\Entity\Entity\AbstractEntity
  Methods:  80.00% ( 4/ 5)   Lines:  88.89% (  8/  9)
\App\Entity\Entity::App\Entity\Entity\User
  Methods:  87.50% (14/16)   Lines:  93.33% ( 28/ 30)
\App\Service\DTO::App\Service\DTO\UserDTO
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% ( 10/ 10)

我希望代码覆盖率报告中包含控制器类。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...