在 入門 的基礎上再來看這一篇。
1、使用注釋@test
來標註需要測試的方法
你的測試方法可以是test
字首的方法,也可以是包含@test
註解的方法。
public
function
testsomething()
/** * @test
*/public
function
something()
2、測試依賴 @depends
有一些測試方法需要依賴於另乙個測試方法的返回值,此時需要使用測試依賴。測試依賴通過注釋@depends
來標記。
public
function
testreturna()
public
function
testreturnb()
/** * @depends testreturna
* @depends testreturnb
*/public
function
testdepends($a
,$b)
3、資料提供器 @dataprovider
在依賴中,所依賴函式的返回值作為引數傳入測試函式。除此之外,我們也可以用資料提供器來定義傳入的資料。
/**
* @dataprovider additionprovider
*/public
function
testadd($a
,$b,$expected
)public
function
additionprovider()
測試異常 (expectexception)
就是看是否丟擲意料之中的異常。需要在測試方法的開始處宣告期望,然後執行語句。而不是呼叫後再宣告。
public
function
testexception()
測試輸出
直接新增期望輸出,然後執行相關函式。和測試異常類似,需要先新增期望,再執行**。
public
function
testexpectfooactualfoo()
public
function
testexpectbaractualbaz()
基鏡
在編寫測試時,最費時的部分之一是編寫**來將整個場景設定成某個已知的狀態,並在測試結束後將其復原到初始狀態。這個已知的狀態稱為測試的基境(fixture)。
例如在user測試中,我們每次都需要new user進行測試user類,其實我們完全可以使用基鏡。
protected
$user
;function
setup()
function
teardown()
public
function
testget()
繼承
phpunit的測試用例都可以直接繼承,進行多繼承測試。
basetest extends testcase
btest extends basetest
於是 btest 和 basetest 都是測試檔案。
有風險的測試 (risky tests)
無用測試 (useless tests)
預設情況下,如果你的測試函式沒有新增預期或者斷言,就會被認為是無用測試。
通過設定--dont-report-useless-tests
命令列引數,或者在 xml 配置檔案中配置bestrictaboutteststhatdonottestanything="false"
來更改這一預設行為。
測試過程中有輸出 (output during test execution)
如果在測試過程中輸出文字,則會被認定為有風險的測試。通過設定--disallow-test-output
命令列引數,或者在 xml 配置檔案中配置bestrictaboutoutputduringtests="true"
來更改這一預設行為。
待完善的測試
處於一些原因,我們希望跳過或者對某些測試方法標記未待完善,使用$this->marktestincomplete
標記待完善的測試
public
function
testsomething()
使用marktestskipped
來標記跳過的測試。
use
phpunit\framework\testcase
;class
databasetest
extends
testcase
}public
function
testconnection()
}
關於編輯器整合 phpunit
phpstorm 自然是很智慧型的檢測你的本地環境是否安裝了 phpunit ,以及當前專案的 phpunit.xml 檔案。
但是 vscode 就不會自動識別了,有興趣的同學可以研究一下,不過我還是習慣在命令列操作。
go Test 單元測試 測試框架
1.建立乙個名為 test.go 的檔案 如果是包中的單元測試,就在包所在目錄下建立該檔案 並將下面的 新增到其中,函式命名統一為test t testing.t package main 包中的單元測試main替換成包名 import testing func testsum t testing....
Qt單元測試框架
qtestlib 框架提供了乙個簡單易用的單元測試框架,需要在工程檔案中新增qt testlib。先看乙個簡單的例子 此外,qt還提供了以下四個會被自動呼叫的private slot inittestcase 在測試開始前被呼叫 cleanuptestcase 在測試結束後被呼叫 init 每個測試...
Test Unit Ruby單元測試框架
test unit ruby單元測試框架 介紹 單元測試是xp的核心部分。xp是偉大的,單元測試已出現了很長一段時間,而且它是乙個很好的思想。好的單元測試的關鍵部分不是寫測試 而是要測試。兩者有什麼不同嗎?當然,如果你只是寫測試 而不用它,那麼你以後對 的修改將不會得到保證。換句話說,如果你已經測試...