[英]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.