接上一篇文章,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.youkuaiyun.com/download/zztoll/12258555