2013-05-08 3 views
2

나는 완전히 갇혔다. 처음에 내 코드 :구성 PHPUnit with phpt

파일 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"는 다른 언어로도 구별 할 수 없습니다.
번역 : "C : \ php \ php.exe"명령의 철자가 잘못되었거나 찾을 수 없습니다. 내 PHP의 실행 파일은이 phpunit을 (phpunit.xml)에 대한 XML 구성 파일의 경로를 포함하고 또한 클래스 PHPUnit_Extensions_PhptTestCase에 옵션으로 포함 경로를 통과하려고 내가 설정하려고 D:/xampp/php

에서 installes입니다.

아무에게도 PHP 실행 파일을 찾을 수 있도록 PHPUnit을 구성하는 방법을 알려 줄 수 있습니까?

+0

[PHPUnit과 PHPT 테스트 케이스 통합] 가능한 복제본 (http : // stackoverflow.com/questions/4922207/integrate-phpt-test-cases-with-phpunit) –

답변

0

소스 파일을 많이 읽고 웹을 검색 한 후, 나는 PHP 실행 파일을 찾을 수 없습니다 이유를 발견했다.

PEAR는 pathes 및 일부 다른 작업을 위해 일부 환경 변수를 사용합니다. 이 변수는 Windows 레지스트리에 저장됩니다. 내 레지스트리가 엉망이되어 pathes를 업데이트해야했습니다.

(이전 버전에서는 go-pear.php)을 다운로드하여 실행했습니다. 파일 PEAR_ENV.reg이 생성됩니다. 레지스트리 키를 Windows 레지스트리로 가져온 후 모든 것이 정상적으로 작동합니다.

2

PHPT 지원은 phpunit에 번들로 제공됩니다. 당신이 시도 할 수 있습니다 :

phpunit.xml :

<phpunit> 
    <testsuites> 
    <testsuite name="PHPT tests"> 
     <directory suffix=".phpt">phpt-tests</directory> 
    </testsuite> 
    </testsuites> 
</phpunit> 

디렉터리 phpt-테스트를 ​​만들고에 sample000.phpt 이동합니다.

phpunit을 실행하십시오. phpunit.xml에서 구성을로드하고 phpt-tests 디렉토리에서 모든 PHPT 테스트를 테스트하는 testsuite를 실행합니다.

$ phpunit 
PHPUnit 3.7.8 by Sebastian Bergmann. 

Configuration read from phpunit.xml  
.  
Time: 0 seconds, Memory: 3.25Mb  
OK (1 test, 1 assertion) 
+0

아니요, 문제가 지속됩니다. –

+0

나는 당신에게 도움을주기 위해 현상금을줍니다. 이것은 매우 특별한 질문이었습니다 (windows, doh!). –