一、預設情況下,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"
>
將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
}
?>
執行結果
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
catch
(invalidargumentexception
$expected
)
$this
->fail(
'預期的異常未出現。'
);
}
}
?>
當預期會引發異常的**並沒有引發異常時,後面對fail()的呼叫將會中止測試,並通告測試有問題。如果預期的異常出現了,將執行catch**塊,測試將會成功結束。
乙個小發現
最近在看一些筆試題目,比如說諸如 例一 解答 變換一次就成為為1的只有 2 2 2 變換兩次就成為1的也只有乙個4 4 2 2 2 變換三次就成為1的有兩個數 3 3 1,4 2,2 2 和 8 8 2,4 2,2 2 變換四次就成為1的有三個數6 7 和16 就不一一列了 所以發現這是乙個fib數...
gedit一些小的新發現
寫應該還有一些人正在像我一樣用gedit呢。現在vim,gedit,guide三黨還是互相瞧不起呢。我寫這一篇是想稍微交流一下gedit的一些亂七八糟的玩意,非gedit黨勿噴。有些人連一些比較基礎的也不知道呢,誠當是普及一下了。會的也勿噴。當然有頹狗zkq之類的比我明白我就不說什麼了。首先ctrl...
刷演算法題時發現的一些小貼士
相加演算法是我自己定義的名字,具體問題如下 假設每次迴圈返回乙個int,第一次返回1,第二次返回2,第三次返回3,最後演算法的結果是123,如何計算?這個 問題看似簡單其實有乙個問題,就是你並不知道迴圈的次數是多少,也就是說無法確定1乘以的究竟是10的幾次方,下面介紹兩種方法 方法一 用stack的...