问题描述
下午好,
我尝试为我的应用程序实现测试,当我检查代码覆盖率时,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 (将#修改为@)