使用PDT和MakeGood在Eclipse中使用PHPUnit测试

Tor*_*mer 5 php eclipse phpunit mysqli

通常使用C和Java进行开发,我无法正确地在Eclipse中运行PHPUnit测试.

我在Ubuntu 15.04上安装了Eclipse Luna SR1(4.4.1)和PDT 3.4.0以及MakeGood 3.1.1.

首先我有错误

PHPUnit_Framework_TestCase class is not available. Fix...

在MakeGood中并尝试将PEAR [Environment]用户库添加到构建路径以反复修复此失败

Cannot create linked resource '/.org.eclipse.dltk.core.external.folders/.link1'

这可以通过添加来解决

<buildpathentry kind="con" path="org.eclipse.dltk.USER_LIBRARY/PEAR"/>
Run Code Online (Sandbox Code Playgroud)

.buildpathEclipse项目文件夹中.

然后运行测试失败了

Fatal error: Class 'PHPUnit_Framework_TestSuite' not found in [...] PHPUnitCollector.php on line 124

所以我创建了一个bootstrap.php:

<?php 

include_once '/usr/share/php/PHPUnit/Autoload.php';
include_once '/usr/share/php/PHP/Token/Stream/Autoload.php';
Run Code Online (Sandbox Code Playgroud)

和a phpunit.xml:

<phpunit bootstrap="bootstrap.php">
</phpunit>
Run Code Online (Sandbox Code Playgroud)

并在MakeGood项目属性中将它们设置为"预装脚本"和"XML配置文件".

它走得更远,但现在测试失败了

Fatal error: Class 'mysqli' not found

这就是我现在迷失的地方.

如果我在命令行上运行测试

phpunit --coverage-html coverage .

它们都运行良好,并且还创建了HTML覆盖率报告.

在PHP Executables下的Eclipse首选项中,我选择PHP CLI (Workspace Default)了Location /usr/bin/php; 在命令行上使用相同的php可执行文件,所以我假设使用相同的php.ini ...所以我不知道为什么它在Eclipse中失败但在命令行上工作.

有什么建议?

Tor*_*mer 0

最终我发现 - 在 PHP 可执行文件下的 Eclipse 首选项中,我必须设置PHP 5.5.3 (CLI)为默认值并进行以下设置:

在此输入图像描述

这里重要的是让“PHP ini 文件(可选)”字段为空,并选中“使用系统默认 php.ini 配置”选项。

现在所有测试都在 MakeGood 中运行。