2013-04-12 35 views
18

Tôi gặp sự cố nhỏ khi cố gắng chạy thử nghiệm PHPUnit trong IDE PhpStorm.Lỗi khi tôi thử chạy PHPUnit từ PhpStorm

tôi sử dụng tập tin nhạc sĩ mà trông:

{ 
    "require": { 
     "phpunit/phpunit": "3.7.19" 
    } 
} 

Bây giờ khi tôi chạy thử nghiệm tôi recive ngoại lệ: PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.'

Điều gì là sai? Khi tôi bao gồm thử nghiệm phiên bản cài đặt lê làm việc OK.

// EDIT mẫu lớp thử nghiệm:

class ReaderTest extends PHPUnit_Framework_TestCase 
    { 
     /** 
     * @test 
     */ 
     public function shouldGetReadedValue() 
     { 
      $this->assertTrue(true); 
     } 
    } 

// EDIT2 Trace:

/usr/bin/php /tmp/ide-phpunit.php --no-configuration /path/to/my/project 
Testing started at 14:53 ... 
PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.' in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:183 
Stack trace: 
#0 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(315): PHPUnit_Framework_TestSuite->__construct(Object(ReflectionClass)) 
#1 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(389): PHPUnit_Framework_TestSuite->addTestSuite(Object(ReflectionClass)) 
#2 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(416): PHPUnit_Framework_TestSuite->addTestFile('/var/www/php-sh...') 
#3 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Runner/BaseTestRunner.php(96): PHPUnit_Framework_TestSuite->addTestFiles(Array) 
#4 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php(150): PHPUnit_Runner_BaseTestRunner->getTest('/var/www/php-sh...', '', A in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php on line 183 

Process finished with exit code 255 
+1

Bạn có thể hiển thị bài kiểm tra đơn vị của mình không? Lớp thử nghiệm của bạn có mở rộng PHPUnit_Framework_TestCase không? –

+1

Tôi chỉnh sửa câu hỏi của mình và thêm lớp kiểm tra mẫu. Tôi có vài lớp thi. –

Trả lời

12

Tôi đã tìm thấy giải pháp về vấn đề này.

Trong cấu hình Chỉnh sửa trong thư mục tôi đặt đường dẫn đến danh mục kiểm tra của tôi (/path/to/my/project/tests), sau khi thử nghiệm này đang chạy đúng cách.

+2

Điều quan trọng cần lưu ý là đường dẫn phải được đặt qua: 'Chạy> Chỉnh sửa cấu hình> PhpUnit' Ở đó, có thể đặt' Thư mục'. Bạn không (!) Tìm thấy điều này trong 'Tệp> Cài đặt' trong PhpStorm. – k0pernikus

0

Bên trong PHPUnit_Framework_TestSuite, mã này exists in the constructor:

if (!$theClass->isSubclassOf('PHPUnit_Framework_TestCase')) { 
    throw new PHPUnit_Framework_Exception(
     'Class "' . $theClass->name . '" does not extend PHPUnit_Framework_TestCase.' 
    ); 
} 

tôi thấy trong của bạn ví dụ mà bạn đang mở rộng PHPUnit_Framework_TestCase nhưng lỗi cho thấy bạn đang sử dụng PHPUnit_Extensions_RepeatedTest kéo dài PHPUnit_Extensions_TestDecorator mà cuối cùng kéo dài PHPUnit_Framework_Assert

PHPUnit_Framework_Assert 
    | 
    --PHPUnit_Extensions_TestDecorator 
     | 
     --PHPUnit_Extensions_RepeatedTest 

Kiểm tra xét nghiệm của bạn vì lỗi cho thấy bạn đang cố gắng để chạy một TestSuite sử dụng thử nghiệm mở rộng PHPUnit_Extensions_RepeatedTest. Bạn có thay vì cố gắng mở rộng PHUnit bằng cách sử dụng Test Decorators?

http://docs.tadiavo.com/phpunit/www.phpunit.de/pocket_guide/3.1/en/extending-phpunit.html

Đó là tất cả những lời khuyên Tôi hiện có thể cung cấp mà không thấy kiểm tra thực tế của bạn và cách bạn đang chạy chúng.

+0

OK, nhưng tại sao khi tôi chạy thử nghiệm từ giao diện điều khiển tất cả mọi thứ là OK? Tôi khá chắc chắn rằng bài kiểm tra của tôi là tốt. Khi tôi đang sử dụng PHPUnit như bao gồm thư viện bên ngoài và đặt cấu hình thích hợp trong PhpStorm hoạt động tốt. –

+0

Câu hỏi của bạn cho biết rằng nó không hoạt động trong PHPStorm. Có lẽ bạn đã cấu hình IDE không chính xác và bây giờ nó hoạt động? –

+0

Tôi đã cấu hình IDE như trong hướng dẫn sử dụng. Tôi thêm phụ thuộc thành công sau đó tôi đặt trình tải tùy chỉnh thành 'vendor/autoload.php'. Đó là tất cả những gì tôi đã làm. –

5

Tôi gặp vấn đề tương tự khi sử dụng nhà soạn nhạc.

Giải pháp là đặt tệp thử nghiệm vào thư mục riêng của nó. Đây là phpunit làm việc của tôi, tôi đặt tất cả các bài kiểm tra của tôi trong thư mục test.

<phpunit bootstrap="vendor/autoload.php" 
    colors="true" 
    convertErrorsToExceptions="true" 
    convertNoticesToExceptions="true" 
    convertWarningsToExceptions="true" 
    stopOnFailure="true"> 
    <testsuites> 
     <testsuite name="Test Suite"> 
      <directory>test</directory> 
     </testsuite> 
    </testsuites> 
</phpunit> 

Hy vọng nó giải quyết nếu có ai có cùng một vấn đề .. :)

5

Đây là những gì làm việc cho tôi, nhờ vào câu trả lời Piotr của trên, nhưng tôi đang cung cấp với chi tiết chính xác hơn một chút ở đây tất cả các bước tôi đã phải làm:

bước để làm cho nó hoạt (thử nghiệm trong PHPStorm 8.0.1):

1) trongPreferences > PHP > PHPUnitđảm bảo rằng không có gì được thiết lập cho mặc định cấu hình e ile hoặc tệp bootstrap mặc định.

2) Thực hiện một cấu hình tùy chỉnh PHPUnit quaRun > Edit Configurations >trongCommand Linetiểu mục, và hãy chắc chắn:

a) thiết lậpCustom working directory:/absolute/path/to/vendor.

b) kiểm tra "Sử dụng tập tin cấu hình thay thế:" và đặt nó vào/absolute/path/to/vendor/your_app/(sub_app_if_applicable)/phpunit.xml.dist

Sau đó, bạn có thể chạy bất kỳ lớp thử nghiệm trong bộ bằng cách xác định lớp và tập tin, hoặc chỉ cần kiểm tra "Defined trong cấu hình tập tin "để chạy tất cả chúng theo cấu hình.

Các vấn đề liên quan