Visual Studio VS C 單元測試

2022-08-21 19:51:16 字數 2605 閱讀 5482

文章目錄

新建了乙個「win32控制台應用程式」,在其內新建了「my_math.h」檔案,為了方便沒有建立類和.cpp檔案,用乙個簡單的函式做範例。

#pragma once

intadd(inta, intb)

此處要選擇visual c++->測試->本機單元測試專案,填寫好名稱,點選確定即可,不需要其他配置就會在當前解決方案下新建出專案。

注意新建的時候直接右鍵選擇當前解決方案-新增-新建專案,這樣預設為當前解決方案

extensions)預編譯標頭檔案,「targetver.h」執行環境定義標頭檔案,「unittest1.cpp」測試檔案。前三個不用管,直接看第四個測試檔案即可。

新建完成myprogramtest專案以後,在屬性-聯結器-輸入-附加依賴項中新增「..\myprogram\debug\*.obj」

建議使用相對路徑,使用*表明所有.obj字尾檔案。注意只需要配置單元測試專案,不需要對原專案做任何修改。

obj檔案(microsoft推出的程式編譯中間**檔案),程式編譯時生成的中間**檔案。目標檔案,一般是程式編譯後的二進位制檔案,再通過鏈結器和資源檔案鏈結就成可執行檔案了。obj只給出了程式的相對位址,而可執行檔案是絕對位址。

#include "cppunittest.h"

#include "../myprogram/my_math.h" //新增原始專案的標頭檔案,建議相對路徑

usingnamespacemicrosoft::visualstudio::cppunittestframework;

namespacemyprogramtest };}

自己包含原始專案被測函式標頭檔案」#include 「../myprogram/my_math.h」 //新增原始專案的標頭檔案,建議相對路徑」

unittest1為測試類名,test_class為vs提供的測試類巨集定義

only_used_at_namespace_scope classclassname : public::microsoft::visualstudio::cppunittestframework::testclass

testmethod1為測試函式名,test_method為vs提供的測試函式巨集定義

assert為斷言類,其提供了areequal、aresame、arenotequal、arenotsame、isnull、isnotnull、istrue、isfalse等多個方法以供測試中進行斷言

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

aresame()//用於驗證指定的兩個物件變數是指向相同的物件,否則認為是錯誤

arenotsame()//用於驗證指定的兩個物件變數是指向不同的物件,否則認為是錯誤

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

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

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

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

若需要多個測試函式,只需要在public:下建立多個test_method即可

若需要多個測試類,可以新建一些cpp檔案,注意包含vs單元測試檔案cppunittest.h

單元測試執行,不需要提前先編譯原始程式,執行測試時會自動編譯。

在選單欄-測試-執行選擇執行所有測試即可

選擇此項後會先編譯目標專案,然後執行所有測試類中的public中的測試函式(有不需要測試的可以臨時改為private)。

測試結果會在測試資源管理器顯示

若此視窗不自動彈出,可在選單欄-測試-視窗開啟

「測試資源管理器」搜尋框左側的三個雙向箭頭按鈕,點選他會進入選中狀態,即開啟了並行測試功能。

對於vs2015 enterprise版本在測試選單下「分析**覆蓋率」可以利用當前單元測試分析對原始專案的**覆蓋率。

vs2015 community版本沒有分析**覆蓋率功能

unittest單元測框架

django預設使用python的標準庫unittest編寫測試用例。學習django單元測試之前,先學習下unittest單元測試框架的基本使用。下面實現乙個簡單的單元測試1.簡單的加法和減法功能實現,module.py 如下 encoding utf 8 class calculator doc...

單元測試應該測什麼

單元測試應該全面覆蓋專案開發的 但是依賴的第三方 不應該被測試。凡是非本專案開發的 都可以認為是第三方 比如,我們專案依賴別的部門提供的儲存服務,連線此服務需要使用他們提供的乙個指令碼,而這個指令碼存放在我們的util目錄中。像這個指令碼,就是所謂的第三方 我用下面這段話來說服領導將這個指令碼從測試...

使用Spring配合Junit進行單元測試的總結

最近公司的專案和自己的專案中都用到了spring整合 junit進行 單元測試,總結一下幾種基本的用法 1.直接對spring中注入的bean進行測試 以dao為例 在測試類上新增 runwith註解指定使用springjunit的測試執行器,contextconfiguration註解指定測試用的...