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)
);
}
...
}
現在,它完美的作品,即使我不喜歡的符號在所有。
「注:測試異常時,您應儘可能具體測試對於過於泛型類可能會導致不良的副作用因此,不再允許使用@expectedException或setExpectedException()來測試Exception類。「資料來源:https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html – LittleBigDev