2013-01-07 71 views
0

我想測試,除其他外,我的課的構造函數。它期望一個參數必須是一個字符串。所以我寫了這個測試:測試幾個例外,具有相同的預期異常

class categoryTest extends PHPUnit_Framework_TestCase { 

    public function testConstructor() { 

    $this->setExpectedException('Exception', 'Unknown data type.'); 
    $objCategory = new category(1); 

    $this->setExpectedException('Exception', 'Unknown data type.'); 
    $objCategory = new category(-500); 

    $this->setExpectedException('Exception', 'Unknown data type.'); 
    $objCategory = new category(true); 

    $this->setExpectedException('Exception', 'Unknown data type.'); 
    $objCategory = new category(array()); 

    ... 

    } 

    public function testNextMethod() { 

    } 

} 

正如你所看到的,我希望每次都相同的異常。

此整理

$this->setExpectedException('Exception', 'Unknown data type.'); 
$objCategory = new category(1); 

後效果非常好,如此看來,但該腳本將跳到testNextMethod()。我必須爲每個測試寫一個自己的testMethod()嗎?或者有任何解決方法?

最好的問候, 耳罩

編輯:

你好塞浦路斯,

非常感謝你對你的迴應。我解決我的問題是這樣的:

class categoryTest extends PHPUnit_Framework_TestCase { 

    protected $backupGlobals = FALSE; 

    /** 
     * 
     * @dataProvider provider 
     * 
     **/ 
    public function testMuff($strCategory) { 

     $this->setExpectedException('Exception', 'Unknown data type.'); 
     $objCategory = new category($strCategory); 

    } 

    public function provider() { 

     $objHIS = new DDDBL('HIS'); 

     return array(array(1), 
        array(-500), 
        array(true), 
        array(array()), 
        array($objHIS) 
       ); 

    } 

    ... 

} 

現在,它完美的作品,即使我不喜歡的符號在所有。

+0

「注:測試異常時,您應儘可能具體測試對於過於泛型類可能會導致不良的副作用因此,不再允許使用@expectedException或setExpectedException()來測試Exception類。「資料來源:https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html – LittleBigDev

回答