如何使用VSTS寫單元測試

2021-04-28 14:16:53 字數 3641 閱讀 7259

microsoft的開發平台vsts(visual studio team system) 整合了單元測試框架(team test),即:

vsts單元測試。    它支援:

1. 生成測試**框架;

2. 在ide中執行測試;

3. 支援從資料庫中載入資料的測試;

4. 測試執行完成後,進行**分析覆蓋。

使用vsts寫單元測試的步驟如下:

1. 建立測試;

2. 編寫測試;

3. 執行測試;

4. **覆蓋。

1.  建立測試

開啟解決方案中的.cs類檔案(如:studentmanager),在其中的乙個方法(如:addstudent() )上右擊,選擇「建立單元測試」命令。

在彈出的「建立單元測試」對話方塊中的「輸出專案」下拉框中選擇「建立新的visual c# 測試專案」,單擊「確定」按鈕,並在「新建測試專案」對話方塊中輸入測試專案的名稱(如:myschooltest),單擊「建立」按鈕後,就看見在原有的解決方案中生成了乙個新的專案「myschooltest」。

測試專案建立成功後,會同時生成4個與測試相關的檔案:

authoringtest.txt提供建立測試的說明,包括向專案增加其他測試的說明;

studentmanagertest.cs包含addstudent()的測試,以及測試初始化和測試清除的方法;

myschoolpro.vsmdi測試管理檔案;

localtestrun.testrunconfig本地測試執行配置檔案。

2.  編寫測試

建立測試完畢後,vsts 為我們自動生成的只是乙個測試框架,預設**中assert.inconclusive 表明這是乙個未經驗證的單元測試。

開啟生成的測試檔案「studentmanagertest.cs」,如示例1:

[testmethod]

public

void

addstudenttest()

單元測試中,幾個變數的簡單介紹:

target表示測試目標物件,通過這個目標物件可以測試該類中的各個方法;

expected表示期望得到的值;

actual表示實際得到的值;

單元測試中,常用的斷言方法介紹:

assert.areequal()測試指定的值是否相等,如果相等,則測試通過;

assert.inconclusive()表示乙個未驗證的測試;

assert.istrue()測試指定的條件是否為true,如果為true,則測試通過;

assert.isfalse()測試指定的條件是否為false,如果為false,則測試通過;

assert.isnull()測試指定的物件是否為空引用,如果為空,則測試通過;

assert.isnotnull()測試指定的物件是否為非空,如果不為空,則測試通過;

我們通過對示例1 新增測試所需的初始值,並對斷言進行簡單的修改後,便得到乙個正式的單元測試。

如示例2:

[testmethod]

public

void

addstudenttest()

這樣,便得到了乙個正式的單元測試。用斷言assert.areequal()比較expected、actual是否相等。

如果相等,測試通過。

配置檔案中的設定

如示例3:

<?

xml version="1.0" encoding="utf-8" 

?>

<

configuration

>

<

configsections

>

configsections

>

<

connectionstrings

>

//資料庫連線字串設定

<

add 

name

="databaseowner"

connectionstring

="dbo"

/>

<

add 

name

="myschoolconnectionstring"

connectionstring

=" data source=.; initial catalog=myschool;

user id=sa; password

=123456 "

providername

="system.data.sqlclient"

/>

connectionstrings

>

configuration

>

3.  執行測試

開啟包含有測試專案的解決方案,在 工具欄 就會出現與測試專案相關的 操作按鈕欄。

我們要執行專案中的測試,只需要執行測試專案。

測試專案的執行方式有兩種:

執行,並啟動除錯功能;

執行,但不啟動除錯功能;

1.  當我們執行測試後,在「測試結果」視窗中,將列出專案中所有的測試。

2.  開始的時候,測試會處於「掛起」的狀態,測試執行的結果是「通過」或者「失敗」。

3.  如果我們要檢視測試結果的額外細節時,選定測試項並雙擊,便開啟了詳細資訊視窗。

4.  **覆蓋

**覆蓋是單元測試的乙個關鍵指標。

**覆蓋:是指單元測試執行時,覆蓋了多少**。

team test 包含了乙個**覆蓋工具,可以詳細解釋被執行**的覆蓋率,並突出顯示哪些**被執行,哪些**沒有被執行。

注意:vsts 在生成單元測試框架時,預設沒有啟用「**覆蓋」功能。

啟用此功能的辦法:

1.  首先開啟「本地測試執行配置檔案」 localtestrun.testrunconfig ,在解決方案中。

2.  雙擊「localtestrun.testrunconfig」檔案,彈出該對話方塊視窗。

3.  在其對話方塊視窗的左側選擇「**覆蓋率」,然後在右側的「要檢測的專案」中選擇要檢測的專案。

4.  單擊「應用」按鈕。

當我們啟用了**覆蓋功能後,再次執行單元測試時:

在「**覆蓋率結果」視窗中,選中「addstudent()」雙擊,便可檢視**覆蓋率。

在「**覆蓋率結果」視窗中,我們還可以檢視單元測試中**覆蓋的塊數,以及**覆蓋的百分比資訊。

如何使用VSTS寫單元測試

microsoft的開發平台vsts visual studio team system 整合了單元測試框架 team test 即 vsts單元測試。它支援 1.生成測試 框架 2.在ide中執行測試 3.支援從資料庫中載入資料的測試 4.測試執行完成後,進行 分析覆蓋。使用vsts寫單元測試的步...

我該如何寫單元測試?

在我的團隊中,單元測試是較難推行的敏捷實踐之一,我思考後覺得有以下原因 1 主觀上覺得會加大工作量,影響進度 2 從未接觸junit等單元測試框架,害怕接觸新事物 3 團隊形式上要求 形式上開展,但是未能結合培訓 code review等方式持續推行 其實單元測試是個相當簡單的技術,當然,要做的完美...

用googletest寫單元測試

reference 對於稍微複雜些的測試用例,例如需要共享資料 class chashtabletest public testing test virtual void setup virtual void teardown chashtable ht string key1 string key...