phpunit 一些小發現

2021-09-21 08:02:03 字數 3907 閱讀 1299

一、預設情況下,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

<phpunitbackupglobals="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

classexpectederrortestextendsphpunit_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 (1test, 1 assertion)

注意 php的error_reporting執行時配置會對phpunit將哪些錯誤轉換為異常有所限制。如果在這個特性上碰到問題,請確認php的配置中沒有抑制想要測試的錯誤型別。

三、對異常進行測試

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

classexceptiontestextendsphpunit_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的...