我完全被困了。起初我的代码是:
文件 sample000.phpt
--TEST--
Basic test
--DESCRIPTION--
Lowlevel basic test
--FILE--
<?php
echo 'Hello World!';
?>
--EXPECT--
Hello World!
文件 PhptTestCase.php
<?php
require_once 'PHPUnit/Extensions/PhptTestCase.php';
class PhptTestCase extends PHPUnit_Extensions_PhptTestCase
{
public $result;
public function __construct( $file ) {
$options = array( 'include_path' => 'D:\\xampp\\php' );
parent::__construct( $file, $options );
}
}
文件 phptTest.php
<?php
class PhptTest extends PHPUnit_Framework_TestCase
{
public $object;
public function setUp() {}
public function tearDown() {}
public function testAll() {
require_once 'phptTestCase.php';
$file = __DIR__ . '/phpt-tests/sample000.phpt';
$phpt = new PhptTestCase( $file );
$result = $phpt->run();
$this->assertTrue( $result->wasSuccessful() );
var_dump( $result->failures() );
}
}
从命令行运行pear run-tests sample000.phpt
可以正常工作。运行phpunit PhptTest.php
将始终失败。
经过一些研究后,我用var_dump( $result->failures() );
转储了结果,看到找不到php可执行文件:
array(1) {
[0] =>
class PHPUnit_Framework_TestFailure#441 (2) {
protected $failedTest =>
class PhptTestCase#434 (3) {
public $result =>
NULL
protected $filename =>
string(84) "D:\\htdocs\\[...]\\phpt/phpt-tests/sample000.phpt"
protected $options =>
array(1) {
...
}
}
protected $thrownException =>
class PHPUnit_Framework_ComparisonFailure#440 (12) {
protected $expected =>
string(12) "Hello World!"
protected $actual =>
string(94) "Der Befehl "C:\\php\\php.exe" ist entweder falsch geschrieben oder\nkonnte nicht gefunden werden."
<-- snip -->
protected $file =>
string(53) "D:\\xampp\\php\\pear\\PHPUnit\\Extensions\\PhptTestCase.php"
protected $line =>
int(209)
private $trace =>
array(17) {
...
}
private $previous =>
NULL
}
}
}
我认为这是使用PHPUnit运行时测试失败的原因:
Der Befehl“C:\ php \ php.exe”ist entweder falsch geschrieben oder \ nkonnte nicht gefunden werden。
翻译:“C:\ php \ php.exe”命令拼写错误或无法找到。我的php可执行文件安装在D:/xampp/php
我尝试在PHPUnit(phpunit.xml
)的XML配置文件中设置包含路径,并尝试将包含路径作为选项传递给类PHPUnit_Extensions_PhptTestCase
。
有人能告诉我如何配置PHPUnit以便它可以找到php可执行文件吗?
答案 0 :(得分:2)
PHPT支持捆绑在phpunit中。你能试试这个:
<强> phpunit.xml 强>:
<phpunit>
<testsuites>
<testsuite name="PHPT tests">
<directory suffix=".phpt">phpt-tests</directory>
</testsuite>
</testsuites>
</phpunit>
创建目录phpt-tests并将sample000.phpt移动到它。
运行phpunit。它将从phpunit.xml加载配置并运行testsuite测试phpt-tests目录中的所有PHPT测试。
$ phpunit
PHPUnit 3.7.8 by Sebastian Bergmann.
Configuration read from phpunit.xml
.
Time: 0 seconds, Memory: 3.25Mb
OK (1 test, 1 assertion)
答案 1 :(得分:0)
在阅读了大量源文件并搜索网页后,我发现了找不到php可执行文件的原因。
PEAR使用一些环境变量来进行修补和其他一些事情。此变量存储在Windows注册表中。我的注册表搞砸了所以我不得不更新这些内容。
我下载了go-pear.phar(对于较旧的php版本使用go-pear.php)并运行它。这会创建一个文件PEAR_ENV.reg
。将注册表项导入Windows注册表后,一切正常。