淺析Visual Studio中VC++單元測試原理

接上一篇文章,VS2015中對MFC工程進行單元測試,當我們通過VS: 文件->新建->項目->Visual C++->測試->本機單元測試項目,新建一個測試工程後,查看unittest1.cpp的代碼,會發現代碼是這樣的:

#include "stdafx.h"
#include "CppUnitTest.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{		
	TEST_CLASS(UnitTest1)
	{
	public:
		
		TEST_METHOD(TestMethod1)
		{
			// TODO: 在此輸入測試代碼

		}
	};
}

8~17行的代碼看起來象是一個類的格式,追蹤TEST_CLASS宏,發現定義如下:

#define TEST_CLASS(className) \
ONLY_USED_AT_NAMESPACE_SCOPE class className : public ::Microsoft::VisualStudio::CppUnitTestFramework::TestClass<className>

原來TEST_CLASS宏定義了一個類,該類繼承自::Microsoft::VisualStudio::CppUnitTestFramework::TestClass。

再查看測試工程屬性->常規->配置類型,爲“動態庫(.dll)”,就明白了測試工程是一個dll工程,編譯該工程,最後確實也生成了一個dll文件。看來該工程是生成了一個類,並使該類可導出,即可供外部調用的類。這個dll有點類似於一個插件。

因此運行測試時,應該是某個程序調用了該dll中的類並實例化,然後再調用了類中的測試函數。

測試過程就是,測試程序 -> 測試DLL ->被測代碼, 感覺中間通過DLL的方式有點多餘了,我何不自建測試程序,將測試過程改爲:測試程序 -> 被測代碼。

自己創建測試程序的過程與用VS嚮導生成測試工程的過程,除了新建工程時選MFC應用程序,寫測試代碼的過都差不多。具體可參見VS2015中對MFC工程進行單元測試

測試工程的代碼見示例:https://download.csdn.net/download/zztoll/12258555

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章