Я не могу понять, как надежно настроить части моего проекта для получения покрытия кода, отображаемого в PhpStorm.
Я использую PhpStorm (EAP), докер (19.03.5-rc1
)) и docker-compose (1.24.1
). Я настроил свой проект с помощью docker-compose.yml, который включает службу php (образ Docker in2code/php-dev:7.3-fpm
, который включает в себя xdebug и основан на официальном образе php:7.3-fpm
). Я создал новый проект с composer и необходимым кодовым восприятием (3.1.2
). Я запустил начальную загрузку codecption, добавил настройки покрытия, создал модульное тестирование и запустил комплект тестов 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 -> DockerCompose -> service php -> docker-compose exec
- Удаленный интерпретатор PHP -> Docker Compose -> service php -> docker-compose run
Я создал PHP Test Framework длякаждый переводчик я создал выше. Я создал конфигурацию запуска Codeception для каждой конфигурации Test Framework. Я выполнил все конфигурации запуска Codeception с любой комбинацией (Project Default) PHP CLI Interpreter и других удаленных интерпретаторов.
Среда тестирования настроена с правильным путем к кодовому восприятию (версия кодирования обнаружена phpstorm) и содержитпуть к файлу codeception.yml в качестве файла конфигурации по умолчанию. Все конфигурации запуска используют файл конфигурации по умолчанию из конфигурации тестовой среды.
Я также попытался включить покрытие в корневом файле codeception.yml, пробовал work_dir: /app
и remote: false
.
Ни одна из этих попыток не привела к покрытию кода, отображаемому в PhpStorm.
Проекты, в которых работает покрытие кода, настроены с помощью образа удаленного интерпретатора PHP (изображение, создаваемое docker-compose для этого проекта). В проекте должен быть образ, построенный по 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.