簡體   English   中英

PHPUnit + PHPStorm:運行/調試的不同錯誤

[英]PHPUnit + PHPStorm: Different errors for run/debug

我從我的項目的單元測試開始,但是遇到了困難。 我有一個單獨運行時可以完美運行的測試。 當我運行所有的測試時,它會失敗:( 我故意刪除了其他代碼和特定的類/變量/函數名稱

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框架。 在此先感謝您的幫助!

我認為您沒有正確地遵循PHPUnit上的教程。 setUp()函數在每個測試之前運行,因為每個測試都是獨立運行的。 因此,您需要為此編寫測試。

class XYZTest extends PHPUnit_Framework_TestCase {
    protected $xml;     // Internal Object for testing

    // Assume you have autoloader configured in bootstrap. If not, Require your class to test
    //require_once('YourXMLClass.php');
    public function setUp()
    {
        $this->xml = new YourXMLClass();        // Create the XML object so it exists for testing.
    }

    public function testXMLIsEmpty()
    {
        $this->assertNull($this->xml->subject);
    }

    public function testXMLSubjectSet()
    {
        $this->xml->SetSubject('Basic Text to be returned as XML subject field');
        $this->assertEquals('<subject>Basic Text to be returned as XML subject field</subject>', $this->xml->subject);
    }
}

我的測試中的假設是您的類中有一個SetSubject方法,該方法將參數添加到XML的主題字段中。 IE瀏覽器:

public function SetSubject($SubjectText)
{
    $this->subject = '<subject>' . $SubjectText . '</subject>';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM