PHP單元測試框架 PHPUnit 提高

2021-10-20 21:22:49 字數 2774 閱讀 2171

在 入門 的基礎上再來看這一篇。

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是偉大的,單元測試已出現了很長一段時間,而且它是乙個很好的思想。好的單元測試的關鍵部分不是寫測試 而是要測試。兩者有什麼不同嗎?當然,如果你只是寫測試 而不用它,那麼你以後對 的修改將不會得到保證。換句話說,如果你已經測試...