phpunit一些小發現
一、預設情況下,PHPUnit將測試在執行中觸發的PHP錯誤、警告、通知都轉換為異常,所以在這樣的情況下,單元測試就會終止。當程式不能保證沒有Notice時,又想單元測試可以順利執行的話,可以修改配置檔案phpunit.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
< phpunit backupGlobals = "true"
backupStaticAttributes = "false"
cacheTokens = "false"
colors = "false"
convertErrorsToExceptions = "true"
convertNoticesToExceptions = "true"
convertWarningsToExceptions = "true"
forceCoversAnnotation = "false"
mapTestClassNameToCoveredClassName = "false"
printerClass = "PHPUnit_TextUI_ResultPrinter"
processIsolation = "false"
stopOnError = "false"
stopOnFailure = "false"
stopOnIncomplete = "false"
stopOnSkipped = "false"
testSuiteLoaderClass = "PHPUnit_Runner_StandardTestSuiteLoader"
timeoutForSmallTests = "1"
timeoutForMediumTests = "10"
timeoutForLargeTests = "60"
strict = "false"
verbose = "false" >
</ phpunit >
|
將convertNoticesToExceptions設為false可以禁用此功能,還有convertWarningsToExceptions
這些選項都是在命令列選項裡無法修改的,當執行的時候可以使用phpunit-cphpunit.xml來指定配置選項。
二、
對PHP錯誤進行測試
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php class ExpectedErrorTest extends PHPUnit_Framework_TestCase
{ /** * @expectedException PHPUnit_Framework_Error */ public function testFailingInclude()
{ include `not_existing_file.php` ;
} } ?> |
執行結果
1
2
3
4
5
|
phpunit -d error_reporting=2 ExpectedErrorTest PHPUnit 3.8.0 by Sebastian Bergmann. . Time: 0 seconds, Memory: 5.25Mb OK (1 test , 1 assertion)
|
注意
PHP的error_reporting執行時配置會對PHPUnit將哪些錯誤轉換為異常有所限制。如果在這個特性上碰到問題,請確認PHP的配置中沒有抑制想要測試的錯誤型別。
三、對異常進行測試
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php class ExceptionTest extends PHPUnit_Framework_TestCase {
public function testException() {
try {
// ... 預期會引發異常的程式碼 ... } catch (InvalidArgumentException $expected ) {
return ;
} $this ->fail( `預期的異常未出現。` );
} } ?> |
當預期會引發異常的程式碼並沒有引發異常時,後面對fail()的呼叫將會中止測試,並通告測試有問題。如果預期的異常出現了,將執行catch程式碼塊,測試將會成功結束。
本文轉自shayang8851CTO部落格,原文連結:http://blog.51cto.com/janephp/1300198,如需轉載請自行聯絡原作者
相關文章
- 開發中的一些小事
- 一些小SQLSQL
- 開發小程式的一些小經驗
- iOS 開發的一些小技巧篇(1)iOS
- iOS 開發的一些小技巧篇(2)iOS
- iOS 開發的一些小技巧篇(3)iOS
- 一些小知識
- 分享Mac下開發中使用的一些小技巧Mac
- phpunit 學習PHP
- jquery的一些小技巧jQuery
- 一些小的方法工具
- Promise一些小總結Promise
- phpunit測試成功phpunit測試實踐程式碼PHP
- 實踐 Laravel phpunitLaravelPHP
- phpunit 快速入門PHP
- PHPUnit 加速技巧分享PHP
- 深入 TypeScript - 3 ( 一些小技巧)TypeScript
- 模組化的一些小研究
- git的一些小命令Git
- jQuery的一些小方法jQuery
- oracle rba一些小知識Oracle
- 一些小問題彙總
- 小程式開發所遇的問題以及一些小細節
- 使用 Laravel 時的一些小技巧Laravel
- Sentinel 的一些小擴充套件套件
- 前端優化的一些小技巧前端優化
- win下一些小工具
- windows 下使用 phpunit 命令WindowsPHP
- phpunit單元測試PHP
- Ubuntu上PHPUnit安裝UbuntuPHP
- ElasticSearch裡面一些小坑筆記Elasticsearch筆記
- 點贊處理的一些小技巧
- 關於Redis的一些小問題Redis
- 專案裡的一些小函式函式
- iOS自己使用的一些小方法iOS
- React Redux使用的一些小優化ReactRedux優化
- 關於MySQL的一些小見解MySql
- C語言的一些小筆記C語言筆記