首先,直接建立自己的解决方案(也就是项目),这里我的项目是LearningOfC++UnitTest: 然后,添加自己的类和内部函数(这里只是为了测试使用): 其中,Node.h和Node.cpp的代码为:
#pragma once class Node { public: int ID; Node(); Node(int x); ~Node(); }; #include "pch.h" #include "Node.h" Node::Node() { ID = 1; } Node::Node(int x) { ID = x; } Node::~Node() { }到这里,我们做好了一个需要测试的例子,即测试Node类的两个构造函数。
接下来为LearningOfC++UnitTest项目添加UnitTest测试项目: 1、右键解决方案——添加——新建项目——测试——本机单元测试项目UnitTest1; 2、在UnitTest1的引用中,右键引用——添加引用——勾选LearningOfC++UnitTest;(注,这里的测试项目只能勾选解决方案内的其它项目) 3、在unittest.cpp文件中,键入#include “…/” ——选择"…/LearningOfC++UnitTest/Node.h"(对应的头文件); 4、输入测试的代码,我这里测试的是Node类的构造函数; 5、重新生成解决方案; 这里提示报错!!!:
2>unittest1.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Node::Node(void)" (??0Node@@QAE@XZ),该符号在函数 "public: void __thiscall UnitTest1::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@1@QAEXXZ) 中被引用 2>unittest1.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Node::Node(int)" (??0Node@@QAE@H@Z),该符号在函数 "public: void __thiscall UnitTest1::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@1@QAEXXZ) 中被引用 2>unittest1.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Node::~Node(void)" (??1Node@@QAE@XZ),该符号在函数 "public: void __thiscall UnitTest1::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@1@QAEXXZ) 中被引用这个问题我花了好久的时间去弄,最后面根据博客:VC++常见错误原因解析之error LNK2019: 无法解析的外部符号 "public: void __thiscall,我试探性的把Node.cpp也Include进去,竟然就可以了。。。。。 6、在unittest.cpp文件中,键入#include “…/” ——选择Node.cpp(将头文件和源文件都include在内); 7、再次重新编译,最后成功了!
8、运行测试,点击测试——运行——所有测试; 9、打开测试资源管理器查看测试结果,测试——窗口——资源管理器; 右边显示一个测试通过了,与实际是相符的,到此,已经成功的使用完成UnitTest。
1、右键解决方案——添加——新建项目——测试——Google Test Sample-Test1;
2、配置测试项目Sample-Test1,选择LearningOfC++UnitTes,这里只有选择测试的项目即可,其它的为默认值; 查看引用,如果再“测试项目配置”中没有选择项目,在引用中还是可以添加项目的: 3、在test.cpp中,将Node.h和Node.cpp都include进来,并编写测试代码,这里测试的代码与UnitTest测试的代码内容一样,都是测试Node类的构造函数; 4、重新生成解决方案,运行所有测试:测试——运行——所有测试; 输出窗口可以看到: 5、打开测试资源管理器,查看所有测试结果: 右侧显示通过两个测试,即UnitTest和Gtest的测试都通过了,到此,已经成功地使用完成GTest。
从此以后,可以开心的使用测试框架来测试了,>.<。