2014-01-28 81 views
30

當我運行vendor/bin/phpunit時,我的測試全部成功運行。然而,當我右鍵點擊一個測試文件,然後單擊「運行測試」我最終看到:無法在PHPStorm的IDE中運行單元測試

/usr/local/bin/php -dxdebug.coverage_enable=1 /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php --coverage-clover /Users/bkuhl/Library/Caches/WebIde70/coverage/services$tests.coverage --no-configuration /Users/bkuhl/Projects/myproject/services/app/tests 
Testing started at 3:09 PM ... 

Fatal error: Class IDE_PHPUnit_Framework_TestListener contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (PHPUnit_Framework_TestListener::addRiskyTest) in /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php on line 504 
PHP Fatal error: Class IDE_PHPUnit_Framework_TestListener contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (PHPUnit_Framework_TestListener::addRiskyTest) in /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php on line 504 
Call Stack: 
    0.0008  340040 1. {main}() /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php:0 

PHP Stack trace: 
PHP 1. {main}() /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php:0 

Process finished with exit code 255 

我PHPStorm配置爲使用path/to/vendor/autoload.php

enter image description here 我暫時改變這種路徑目錄爲此截圖的目的,但它是一個完全有效的路徑。

有沒有人遇到問題使用PHPStorm的能力來運行您的測試?

composer.json:執行PHPUnit測試時

"require-dev": { 
    "way/generators": "dev-master", 
    "way/laravel-test-helpers": "dev-master", 
    "mockery/mockery": "*", 
    "codeception/aspect-mock": "*", 
    "phpunit/phpunit": "3.9.*@dev" 
}, 
+1

你運行什麼phpstorm版本?什麼是phpunit版本? – zerkms

+0

@zerkms - 這將是一個很好的信息,包括我...... v7.1.1 – Webnet

+1

......那麼** PHPUnit版**怎麼樣? ..或者我應該猜測它是3.8? – LazyOne

回答

43

PhpStorm使用的包裝/輔助腳本(集成用途:監控執行進度,堆棧跟蹤等)。

目前該助手腳本不支持PHPUnit的3.8或3.9 - 只有3.7及以下。

通訊門票:http://youtrack.jetbrains.com/issue/WI-21666 - 看它(星/票/評論)得到通知時,它會得到解決。

P.S.
現在已解決此問題並在下一個公共EAP構建中提供修復(比當前的134.1456更新)。

+2

非常好,謝謝! – Webnet

+2

不幸的是它仍然影響IntelliJ IDEA 12.1.6。如果只有我可以覆蓋它如何生成臨時文件... – Darien

+0

我只是遇到了這與PhpStorm 7.1.3。 PHPUnit目前在4.2.0!我猜我必須降級。 – CXJ

6

另一種解決方案: 設置

"phpunit/phpunit": "3.7" 

composer.json

和運行

composer update 

那麼問題將得到解決。

這個工作對我來說還...

IntelliJ IDEA won't run PHPUnit 4.0 tests

+0

我得到了詹金斯的同樣的問題..謝謝! – Mirouf

6

命名舍甫琴科KOMM添加解的一些用戶基於php插件在IDE中票線程手動固定(http://youtrack.jetbrains.com/issue/WI-21666):

一種解決方法,直到它被固定:

  1. 去/插件/ PHP/lib目錄

  2. 使php.jar

  3. 使用任何工具,你要打開的文件,通常壓縮或其他壓縮工具或ubuntu下的文件輥的備份。

  4. 轉到scripts/phpunit。PHP

  5. 修改它,搜索 「IDE_PHPUnit_Framework_TestListener」 類,並且添加有下面的行:

公共函數addRiskyTest(PHPUnit_Framework_Test的$測試,異常 $ E,$時間){} 6 。保存文件並更新php.jar

注意1:根據您使用的操作系統和工具,您可能需要拆包 .jar才能修改並將其壓縮回jar。在Ubuntu上使用文件 roller我可以跳過這一步,編輯文件並直接更新 jar。

編輯/tmp/ide-phpunit.php沒有幫助,因爲它得到 覆蓋phpunit.php文件,我上面提到。

注2:也根據不同的型號,你可能會發現php.jar 別處:

無論是在這裏:去你的用戶的主目錄(在Windows/Linux)或 搜索VOR一個隱藏目錄.Webide ,一方面是取決於你的phpstorm版本(E G. .Webide70。)一些

或者在這裏:我認爲早期版本被命名爲喜歡.IntelliJIdea 一方面是取決於你的phpstorm版本號。

還有使用爲我工作的同一路徑(/插件/ PHP/lib目錄)

(Windows 7中,PHPStorm 7,#PS-133.982)。

相關問題