我不知道如何可靠地配置项目的各个部分以使代码覆盖率显示在PhpStorm中。
我正在使用PhpStorm(EAP),docker(19.03.5-rc1
)和docker-compose(1.24.1
)。我使用包含php服务的docker-compose.yml设置了我的项目(Docker镜像in2code/php-dev:7.3-fpm
包含xdebug并基于官方php:7.3-fpm
镜像)
我使用作曲家和必需的代码接收(3.1.2
)创建了一个新项目。我运行了codecption引导程序,添加了coverage设置,创建了单元测试,并运行了带有coverage的while测试套件。该覆盖率未出现在PhpStorm中,或在任何地方都显示0%。我不知道如何配置PhpStorm / Codeception来显示覆盖范围。在某些项目中,此方法有效,但是它们被配置为使用Docker映像而不是运行中的docker-compose容器。
我尝试了以下远程PHP解释器:
- 远程PHP解释器-> Docker->图像(
in2code/php-dev:7.3-fpm
) - 远程PHP解释器-> Docker->由docker-compose为此项目(
cct_php:latest
)构建的映像 - 远程PHP解释器-> Docker Compose->服务php-> docker-compose exec
- 远程PHP解释器-> Docker Compose->服务php-> docker-compose运行
我为上面创建的每个解释器创建了一个PHP测试框架。 我为每个测试框架配置创建了Codeception运行配置。 我使用(Project Default)PHP CLI Interpreter和其他远程解释器的任意组合执行了所有Codeception运行配置。
为测试框架配置了正确的代码接收路径(phpstorm检测到代码接收版本),并且将代码接收.yml文件的路径保存为默认配置文件。所有运行配置都使用测试框架配置中的默认配置文件。
我还尝试在根codeception.yml文件中启用覆盖,尝试了work_dir: /app
和remote: false
。
这些尝试均未生成PhpStorm中显示的代码覆盖率。
使用PHP远程解释器Docker映像(该项目的docker-compose构建的映像)配置代码覆盖范围有效的项目
编辑:项目的CLI解释器必须是docker-compose build
构建的映像。在Codeception运行配置中设置不同的命令行解释器没有任何作用
docker-compose.yml
version: '3.7'
services:
php:
image: in2code/php-dev:7.3-fpm
volumes:
- ./:/app/
- $HOME/.composer/auth.json:/tmp/composer/auth.json
- $HOME/.composer/cache/:/tmp/composer/cache/
tests / unit.suite.yml
actor: UnitTester
modules:
enabled:
- Asserts
- \App\Tests\Helper\Unit
step_decorators: ~
coverage:
enable: true
remote: true
include:
- src/*
tests / unit / App / Controller / AirplaneControllerTest.php
<?php
declare(strict_types=1);
namespace App\Tests\App\Controller;
use App\Controller\AirplaneController;
class AirplaneControllerTest extends \Codeception\Test\Unit
{
/**
* @covers \App\Controller\AirplaneController::start
*/
public function testsomeFeature()
{
$airplaneController = new AirplaneController();
$airplaneController->start();
}
}
我是否错过了配置中的某些内容?
最好的解决方案是对远程解释器使用docker-compose exec
进行有效配置,因此其他服务(例如mysql或ldap)可用于功能测试。