在Eclipse中运行PHPUnit测试会生成java.util.ConcurrentModificationException

时间:2018-09-10 15:20:41

标签: java php eclipse phpunit eclipse-pdt

当我在Eclipse PDT中运行PHPUnit测试时,右键单击测试文件夹并选择Run As> PHPUnit Testm

产生此错误:

PHPUnit Error in Eclipse

我导航到Eclipse日志文件并找到以下文本:

  

eclipse.buildId = 4.8.0.I20180611-0500

     

java.version = 10.0.2 java.vendor = Oracle公司BootLoader

     

常量:OS = win32,ARCH = x86_64,WS = win32,NL = en_US Framework

     

参数:-product org.eclipse.epp.package.php.product命令行

     

参数:-os win32 -ws win32 -arch x86_64 -product

     

org.eclipse.epp.package.php.product

     

这是日志文件的继续:[已模糊]创建时间:[已模糊]

     

org.eclipse.core.jobs错误发生内部错误   在:“启动phpunit-tests”期间。

     

java.util.ConcurrentModificationException在   java.base / java.util.HashMap.computeIfAbsent(未知源)   org.eclipse.php.phpunit.ui.launch.PHPUnitLaunchConfigurationDelegate.setEnvironmentVariables(PHPUnitLaunchConfigurationDelegate.java:341)     在   org.eclipse.php.phpunit.ui.launch.PHPUnitLaunchConfigurationDelegate.launch(PHPUnitLaunchConfigurationDelegate.java:110)     在   org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:859)     在   org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:717)     在   org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1039)     在   org.eclipse.debug.internal.ui.DebugUIPlugin $ 8.run(DebugUIPlugin.java:1256)     在org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)

我在互联网上找到的许多信息似乎已经过时了。

以下是有关我的环境的一些信息: PHP版本:7.2.9
PHPUnit版本:7.3.2
平台:Windows 10 Pro

3 个答案:

答案 0 :(得分:0)

对我有用的是将 Java 10 降级为 Java 8

答案 1 :(得分:0)

添加PHPUNIT_PORT

后,它开始工作

答案 2 :(得分:0)

我在Ubuntu 18.04.2 LTS(在VirtualBox中)使用PHP 7.2时遇到了OpenJDK 11.0.3,Eclipse + PHP 2019-06(4.1.12)相同的问题。

我在同一个父目录中使用项目composer.json所需的phpunit和本地composer.phar。

我不仅必须像Asytaka那样在Run / Debug配置中为port设置Environment变量,而且还必须显式设置工作区中的Composer.phar才能使其正常工作。右键单击另一个测试文件会自动为该文件自动创建一个伪造的(调试)调试/运行配置,因此它还是有点不稳定,所以我只是将配置设置为在测试目录中运行所有测试。 >

可行的步骤:

  1. 右键单击Project-> Run As-> Run Configurations ...
  2. 删除所有无效的配置。
  3. 右键单击“ PHPUnit”,然后选择“新配置”
  4. 在“ PHPUnit”选项卡下,选择“使用项目的PHPUnit(Composer)”
  5. 单击显示“单击此处以更改默认密码”的链接。
  6. 对于PHPUnit Phar:确保在弹出的屏幕中选择了您项目的Composer.phar(浏览...但是我选择了它)。
  7. 还要确认“通讯端口:”设置为7478
  8. 在配置的“环境”选项卡上,还将yutaka发布的PHPUNIT_PORT变量设置为7478。
  9. 我还将我的测试文件夹放在PHPUnit选项卡的“在选定项目,源文件夹或文件中运行所有测试”下,并将配置添加到“常用”选项卡中的“运行和调试”的收藏夹中。

它仍然不是完美的,但至少现在它正在IDE中运行/调试我的测试。