我開始爲我的項目進行單元測試,但遇到困難。當我單獨運行時,我有一個測試完美運行。當我運行了一大堆的測試中,我有,它失敗:(我已刪除了其他代碼和目的特定的類/變量/函數名)PHPUnit + PHPStorm:用於運行/調試的不同錯誤
class XYZTest extends PHPUnit_Framework_TestCase {
public function setUp() {
$xml = $this->createXML();
//...
}
public function testWillFailUponRunAllTests() {
$this->subject = new XYZ();
$result = $this->subject->getHelpText();
//assert this and that
}
}
執行單個測試:完美運行。
執行所有測試:我得到了一個我已經注入的類的錯誤。這很奇怪,所以我想調試測試以瞭解發生了什麼。
調試所有測試:我甚至不得到的錯誤,因爲setUp()
已經導致該錯誤消息:XYZTest::setUp(): Invalid State Error
很顯然,這種情況既不當我運行分離的考驗,也不當我運行所有在「正常」模式下進行測試。僅在調試模式下!
調試單一測試:我得到另一種行爲:
PHPUnit_Framework_TestResult::run(): Invalid State Error' in phar://C:/xampp/php/phpunit.phar/phpunit/Framework/TestResult.php on line 668
。例如,只有當我設置斷點時纔會發生這種情況,而不是在禁用它們時發生。似乎PHPStorm錯誤。
我使用PHP 5.5.9,PHPStorm 7.1.3,PHPUnit 3.7.31,xDebug v2.2.3。我沒有使用任何PHP框架。在此先感謝您的幫助!
我不知道setUp()是在每次測試之前執行的,謝謝!我的測試看起來完全像你的模擬。問題是我得到一個錯誤,但無法調試 - 無論我在XPSTest的哪一行放置PHPStorm,下一步進入/ Step Over都會拋出「無效狀態錯誤」並中止調試。在本身運行'XYZTest'仍然沒有任何錯誤。我會更新我的問題。 – PeerBr
Steven,我發現了這個錯誤,它與PHPStorm的bootstrap文件有關,它似乎有一些不一致之處。此外,無論是PHPStorm還是PHPUnit似乎都會在PHP拋出錯誤時開始表現得非常奇怪,我之前遇到過這種情況。這可能是開發人員最好的解決辦法,但是謝謝你向正確的方向暗示我。 – PeerBr
@PeerBr這個錯誤很有趣。過去我已經能夠使用NetBeans和PHPStorm進行調試,但最近沒有嘗試過,也沒有嘗試過您列出的版本。除了setUp()之外,PHPUnit文檔的第6部分還有一個匹配的tearDown()和setUpBeforeClass()/ tearDownAfterClasS()。 –