2

我完全被困住了。起初我的代码:

文件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

我尝试在 XML 配置文件中为 PHPUnit( phpunit.xml) 设置包含路径,并尝试将包含路径作为选项传递给类PHPUnit_Extensions_PhptTestCase

谁能告诉我如何配置 PHPUnit 以便它可以找到 php 可执行文件?

4

2 回答 2

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 加载配置并运行测试套件来测试 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)
于 2013-05-14T04:26:28.703 回答
0

看了很多源文件,在网上搜索了一下,找到了找不到php可执行文件的原因。

PEAR 使用一些环境变量来表示路径和其他一些东西。此变量存储在 Windows 注册表中。我的注册表搞砸了,所以我不得不更新路径。

我下载了 go-pear.phar(对于旧的 php 版本使用go-pear.php)并运行它。这将创建一个文件PEAR_ENV.reg。将注册表项导入 Windows 注册表后,一切正常。

于 2013-05-17T08:42:22.727 回答