奇怪';空测试套件';。在Docker中运行PHPUnit测试时的输出

奇怪';空测试套件';。在Docker中运行PHPUnit测试时的输出,php,docker,docker-compose,phpunit,phpstorm,Php,Docker,Docker Compose,Phpunit,Phpstorm,我已经用Redis、MySQL、php fpm和Nginx Web服务器建立了一个docker compose环境。以下是docker compose.yml的相关部分: webserver: image: nginx:alpine container_name: webserver working_dir: /application volumes: - .:/application - ./phpdock

我已经用Redis、MySQL、php fpm和Nginx Web服务器建立了一个
docker compose
环境。以下是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
build的结构:

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/*

您可以识别结构或默认值;我用计算机生成了它

我的容器都构建得很好,所以我的下一步是设置PHPStorm,从phpfpmocker容器中运行测试。我正确设置了远程解释器和PHPUnit路径,运行了一个基本测试,并得到了以下(奇怪的)输出:

我马上注意到两件事:通常,当测试中出现错误时,PHPUnit将输出这些错误。在这里,我什么也得不到。其次,我收到一条消息,上面写着“空测试套件”。尽管有几行,它还是打印了“测试:9,断言:0,错误:1”,这在我看来并不是空测试套件


简而言之,我完全不知道发生了什么,甚至不知道如何排除故障!如果有人对此有所了解,我将不胜感激。

我通过设置docker映像以允许SSH访问,然后使用PHPStorm的SSH远程解释器而不是docker远程解释器来“解决”这个问题。我不太愿意接受我的解决方案作为真正的答案,因为它更多的是一种变通方法,但我将把它留给后人/未来的谷歌用户。

首先要检查的是,当您运行相同的命令时,输出是否有任何不同(
php/application/src/app/vendor/bin/phpunit等等
)手动使用
docker compose run
(或
docker compose exec
,具体取决于您如何配置远程解释器)。这是一个好问题。我尝试了相同的命令并得到了相同的输出,但凭直觉我删除了PHPUnit添加的
--teamcity
参数。最后,我可以看到我的错误!但是,每当我的测试失败时,从命令行重新运行测试并删除该参数以查看错误输出似乎并不实际。没有
--teamcity
参数的
空测试套件
警告是否仍然存在?从我所看到的,即使有参数,错误仍然应该被打印出来,所以我认为问题是由其他原因引起的:Phpunit中的空测试套件意味着没有找到任何测试。或者根本没有测试文件(类),或者找到的测试文件(类)不包含任何测试方法。如果在Docker容器中执行文件,请检查Docker容器中的所有文件是否可用。Phpstorm远程解释器确实会临时将文件移动到其中(或使用映射),但它非常有限,例如,您无法看到它处理非项目文件,如临时文件。
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