标签:
在VS2013中,可以使用VS自带的C++单元测试框架。
在使用该框架前,需要先安装Unit Test Generator(可以通过菜单“工具->扩展和更新”搜索安装)。
下边,就阐述一下利用该框架的步骤:
将该工程的"配置类型"改为“动态库(dll)”,如下图:
在解决方案NativeUnitTest下新建单元测试工程,“Visual C++ -> 测试 -> 本机单元测试项目”,如下图所示:
这样做的目的在于生成.obj文件(在NativeUnitTest/Debug/中),以便于单元测试项目添加。
详细如下图所示:
NativeUnitTest项目的头文件和源文件如下:
1 class TrivialCalculator 2 { 3 public: 4 double Add(double x, double y); 5 double Subtract(double x, double y); 6 double Multiply(double x, double y); 7 double Divide(double x, double y); 8 };
1 #include "TrivialCalculator.h" 2 3 double TrivialCalculator::Add(double x, double y) 4 { 5 return x + y; 6 } 7 8 double TrivialCalculator::Subtract(double x, double y) 9 { 10 return x - y; 11 } 12 13 double TrivialCalculator::Multiply(double x, double y) 14 { 15 return x * y; 16 } 17 18 double TrivialCalculator::Divide(double x, double y) 19 { 20 return x / y; 21 }
单元测试文件如下:
1 #include "stdafx.h" 2 #include "CppUnitTest.h" 3 #include "..\NativeUnitTest\TrivialCalculator.h" 4 5 using namespace Microsoft::VisualStudio::CppUnitTestFramework; 6 using namespace std; 7 8 namespace NativeUnitTest_Namespace 9 { 10 TEST_CLASS(TrivialCalculatorTest) 11 { 12 public: 13 TrivialCalculatorTest() 14 { 15 test = new TrivialCalculator; 16 } 17 18 ~TrivialCalculatorTest() 19 { 20 delete test; 21 } 22 23 TEST_METHOD(AddTest) 24 { 25 //TrivialCalculator test; 26 double actual = test->Add(1.0, 2.0); 27 double expected = 3.0; 28 29 Assert::AreEqual(expected, actual, 0.0001); 30 } 31 32 TEST_METHOD(SubtractTest) 33 { 34 //TrivialCalculator test; 35 double actual = test->Subtract(2.0, 1.0); 36 double expected = 1.0; 37 38 Assert::AreEqual(expected, actual, 0.0001); 39 } 40 41 42 public: 43 TrivialCalculator * test; 44 45 }; 46 47 }
具体步骤到此结束!
项目文件可以从百度云下载。
参考资料:
使用 Microsoft.VisualStudio.TestTools.CppUnitTestFramework
(英文版Using Microsoft.VisualStudio.TestTools.CppUnitTestFramework)
Writing Native C++ Unit Tests with VS Test
Unit testing native code with Test Explorer
Visual Studio 单元测试 C++ 版 —— 测试已有的工程
在Visual Studio 2013 中使用C++单元测试
标签:
原文地址:http://www.cnblogs.com/xiehongfeng100/p/4438076.html