Странный «Пустой набор тестов». вывод при запуске тестов PHPUnit в Docker

Я настроил среду docker-compose с Redis, MySQL, php-fpm и веб-сервером Nginx. Вот соответствующие части docker-compose.yml:

webserver:
      image: nginx:alpine
      container_name: webserver
      working_dir: /application
      volumes:
          - .:/application
          - ./phpdocker/webserver/nginx.conf:/etc/nginx/conf.d/default.conf
      ports:
       - "8082:80"

php-fpm:
      build: phpdocker/php-fpm
      container_name: php-fpm
      working_dir: /application
      volumes:
        - .:/application
        - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.3/fpm/conf.d/99-overrides.ini

А вот структура указанной сборки php-fpm:

FROM phpdockerio/php73-fpm:latest
WORKDIR "/application"

# Fix debconf warnings upon build
ARG DEBIAN_FRONTEND=noninteractive

# Install selected extensions and other stuff
RUN apt-get update \
    && apt-get -y --no-install-recommends install  php7.3-mysql php-redis php-xdebug \
    && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*

# Install git
RUN apt-get update \
    && apt-get -y install git \
    && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*

Вы можете распознать структуру или значения по умолчанию; Я создал его с помощью phpdocker.

Все мои контейнеры строятся хорошо, поэтому моим следующим шагом было настроить PHPStorm для запуска тестов из контейнера Docker php-fpm. Я правильно настроил удаленный интерпретатор и путь PHPUnit, провел базовый тест и получил этот (странный) результат:

docker-compose://[/Users/christian/projects/application/docker-compose.yml]:php-fpm/php /application/src/app/vendor/bin/phpunit --configuration /application/phpunit.xml --filter "/(::testPagesReturnExpectedStatus)( .*)?$/" Tests\Smoke\SmokeTest /application/tests/php/Smoke/SmokeTest.php --teamcity
Starting application__phpstorm_helpers_1 ... 
Recreating php-fpm            ... 
Attaching to php-fpm
php-fpm    | PHPUnit 7.4.3 by Sebastian Bergmann and contributors.
php-fpm    | 
php-fpm    | Runtime:       PHP 7.3.6-1+ubuntu18.04.1+deb.sury.org+1 with Xdebug 2.7.1
php-fpm    | Configuration: /application/phpunit.xml
php-fpm    | 
php-fpm    | 
php-fpm    | 
php-fpm    | fivefour-php-fpm    | 
php-fpm    | Empty test suite.
php-fpm    | 
php-fpm    | 
php-fpm    | Time: 1.59 seconds, Memory: 6.00 MB
php-fpm    | 
php-fpm    | 
php-fpm    | ERRORS!
php-fpm    | Tests: 9, Assertions: 0, Errors: 1.
php-fpm exited with code 2
Aborting on container exit...

Process finished with exit code 2

Я сразу заметил две вещи: обычно, когда в тесте есть ошибки, PHPUnit выводит эти ошибки. Здесь я ничего не получаю. Во-вторых, я получаю сообщение «Пустой набор тестов», несмотря на то, что парой строк ниже выводится «Тесты: 9, Утверждения: 0, Ошибки: 1», что не похоже на пустой тест. люкс для меня.

Короче говоря, я совершенно не понимаю, что происходит или даже как это устранить! Если у кого-то есть понимание, я был бы очень признателен.


person CGriffin    schedule 13.06.2019    source источник
comment
Первое, что нужно проверить здесь, это отличается ли вывод, когда вы запускаете ту же команду (php /application/src/app/vendor/bin/phpunit blah-blah) вручную с помощью docker-compose run (или docker-compose exec, в зависимости от того, как вы настроили удаленный интерпретатор).   -  person Eugene Morozov    schedule 14.06.2019
comment
Это хороший вопрос. Я попробовал ту же команду и получил тот же результат, но по наитию я удалил этот аргумент --teamcity, который добавляет PHPUnit. Наконец-то я вижу свою ошибку! Но кажется непрактичным всякий раз, когда мои тесты терпят неудачу, повторно запускать тесты из командной строки и удалять этот аргумент, чтобы увидеть вывод ошибки.   -  person CGriffin    schedule 14.06.2019
comment
Предупреждение Empty test suite все еще существует без аргумента --teamcity? Из того, что я вижу, ошибки по-прежнему должны выводиться даже с аргументом, поэтому я предполагаю, что проблема вызвана чем-то другим: prntscr.com/o2tnnt   -  person Eugene Morozov    schedule 17.06.2019
comment
Пустой набор тестов в Phpunit означает, что тесты не найдены. То есть либо тестовых файлов (классов) вообще нет, либо найденные не содержат тестовых методов. Убедитесь, что все файлы доступны внутри контейнера Docker, если вы выполняете файлы там. Удаленный интерпретатор Phpstorm временно перемещает туда файлы (или использует сопоставление), он довольно ограничен, например. вы не можете видеть, как он работает с файлами, не относящимися к проекту, такими как рабочие файлы.   -  person hakre    schedule 01.07.2019


Ответы (1)


Я «решил» это, настроив свой образ докера, чтобы разрешить доступ по SSH, а затем используя удаленный интерпретатор PHPStorm SSH вместо удаленного интерпретатора докера. Я не решаюсь принять мое решение как реальный ответ, так как это скорее обходной путь, но я оставлю его здесь для потомков/будущих сотрудников Google.

person CGriffin    schedule 24.06.2019