运行PHPUnit

问题描述

我当前的设置是:PHPStorm,Docker WSL,Ubuntu(WSL)。我所有的项目文件都是本地的,并且在WSL Ubuntu中。在PHPStorm上设置了Docker容器和CLI解释器。

似乎可以在我的“ PHP-fpm”容器中识别PHP(它可以获取PHP信息)。当我运行PHPUnit测试时,它似乎已连接到我的容器。

如果我理解正确,PHPStorm会将我的项目文件从WSL Ubuntu装载到一个新容器中,该容器使用Docker容器'PHP-fpm'运行单元测试?但这似乎并未将我的项目文件安装在单元测试容器中。我收到以下错误

Testing started at 11:54 AM ...
[docker://laradock/PHP-fpm:latest-7.3/]:PHP /opt/.PHPstorm_helpers/PHPunit.PHP --no-configuration --filter Tests\\Feature\\ExampleTest --test-suffix ExampleTest.PHP /opt/project/tests/Feature
The value of autoloader is specified,but file doesn't exist '/opt/project/vendor/autoload.PHP'

Process finished with exit code 1

当我手动(通过Docker桌面)启动Docker容器并创建PHPStorm并进入bash时,/opt/project中没有文件,但是有/opt/.PHPstorm_helpers/PHPunit.PHP。问题出在哪。我的Docker从WSL挂载的实际项目文件/var/www中。我尝试将路径映射更改为指向这些文件,但仍然遇到相同的错误

任何建议表示赞赏。

Docker Settings

CLI

PHP Settings

Test Framework Settings

解决方法

根据注释线程,Phpstorm当前不支持Docker WSL PHPUnit测试环境。

,

我也为此感到挣扎,但是我确实有一种解决方法。我主要需要用于软件包开发。

我有一个基于官方PHP CLI映像的预构建自定义docker映像,其中包含了我大部分开发所需的各种模块。

仅使用PHP服务创建一个docker-compose.yml文件,例如,我的是:

version: "3.7"

services:
  php:
    container_name: pkg
    image: my.private.registry/php7-cli:7.4.10
    volumes:
      - ./:/opt/project
    entrypoint: /bin/bash
    tty: true

在WSL中使用docker-compose up -d

运行此命令

然后,在选择远程CLI解释器时,选择Docker Compose并选择您的服务:

enter image description here

选择连接到现有容器:

enter image description here

在测试框架中,选择我们刚刚配置的远程解释器,然后将显示PHPUnit:

enter image description here

运行测试并微笑=)

enter image description here

一种骇人听闻的方法,尤其是当您不需要像站点那样运行服务时创建类似程序包的方法时,但至少现在它是可用的,并且您可以获得WSL2的性能优势,而不是hyper-v后端。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...