Как настроить PhpStorm, Codeception и Docker для надежного получения покрытия кода - PullRequest
0 голосов
/ 06 ноября 2019

Я не могу понять, как надежно настроить части моего проекта для получения покрытия кода, отображаемого в 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.

1 Ответ

1 голос
/ 07 ноября 2019

К сожалению, сейчас он безнадежно сломан: https://youtrack.jetbrains.com/issue/WI-32625

...