W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
默認(rèn)情況下,PHPUnit 將測(cè)試在執(zhí)行中觸發(fā)的 PHP 錯(cuò)誤、警告、通知都轉(zhuǎn)換為異常。利用這些異常,就可以,比如說(shuō),預(yù)期測(cè)試將觸發(fā) PHP 錯(cuò)誤,如Example?2.14, “用 @expectedException 來(lái)預(yù)期 PHP 錯(cuò)誤”所示。
Note
PHP 的
error_reporting
運(yùn)行時(shí)配置會(huì)對(duì) PHPUnit 將哪些錯(cuò)誤轉(zhuǎn)換為異常有所限制。如果在這個(gè)特性上碰到問(wèn)題,請(qǐng)確認(rèn) PHP 的配置中沒(méi)有抑制想要測(cè)試的錯(cuò)誤類型。
Example?2.14.?用 @expectedException 來(lái)預(yù)期 PHP 錯(cuò)誤
<?php
class ExpectedErrorTest extends PHPUnit_Framework_TestCase
{
/**
* @expectedException PHPUnit_Framework_Error
*/
public function testFailingInclude()
{
include 'not_existing_file.php';
}
}
?>
phpunit -d error_reporting=2 ExpectedErrorTest
PHPUnit 5.0.0 by Sebastian Bergmann and contributors.
.
Time: 0 seconds, Memory: 5.25Mb
OK (1 test, 1 assertion)
PHPUnit_Framework_Error_Notice
和 PHPUnit_Framework_Error_Warning
分別代表 PHP 通知與 PHP 警告。
Note
對(duì)異常進(jìn)行測(cè)試是越明確越好的。對(duì)太籠統(tǒng)的類進(jìn)行測(cè)試有可能導(dǎo)致不良副作用。因此,不再允許用
@expectedException
或setExpectedException()
對(duì)Exception
類進(jìn)行測(cè)試。
如果測(cè)試依靠會(huì)觸發(fā)錯(cuò)誤的 PHP 函數(shù),例如 fopen
,有時(shí)候在測(cè)試中使用錯(cuò)誤抑制符會(huì)很有用。通過(guò)抑制住錯(cuò)誤通知,就能對(duì)返回值進(jìn)行檢查,否則錯(cuò)誤通知將會(huì)導(dǎo)致拋出 PHPUnit_Framework_Error_Notice
。
Example?2.15.?對(duì)會(huì)引發(fā)PHP 錯(cuò)誤的代碼的返回值進(jìn)行測(cè)試
<?php
class ErrorSuppressionTest extends PHPUnit_Framework_TestCase
{
public function testFileWriting() {
$writer = new FileWriter;
$this->assertFalse(@$writer->write('/is-not-writeable/file', 'stuff'));
}
}
class FileWriter
{
public function write($file, $content) {
$file = fopen($file, 'w');
if($file == false) {
return false;
}
// ...
}
}
?>
phpunit ErrorSuppressionTest
PHPUnit 5.0.0 by Sebastian Bergmann and contributors.
.
Time: 1 seconds, Memory: 5.25Mb
OK (1 test, 1 assertion)
如果不使用錯(cuò)誤抑制符,此測(cè)試將會(huì)失敗,并報(bào)告 ~~~
fopen(/is-not-writeable/file): failed to open stream: No such file or directory
~~~。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: