VS2015中使用单元测试的方法-以fibonacci数列的实现为例

xiaoxiao2021-02-28  109

创建VS2015的WIN32控制台程序,创建Fibonacci类,构造析构函数默认即可,声明递归与非递归计算方法;Fibonacci.h文件具体实现: 详细实现的方法在Fibonacci.cpp中:两个递归计算方法实现如下: unsigned int Fibonacci::GetFibonacciRecursive(unsigned int Num) { if (0 == Num) { return 0; } if (1 == Num) { return 1; } return GetFibonacciRecursive(Num - 1) + GetFibonacciRecursive(Num - 2); } unsigned int Fibonacci::GetFibonacciNonRecursive(unsigned int Num) { unsigned int CurFibonacciNum = 0; unsigned int PrevFibonacciNum = 1; unsigned int PrevPrevFibonacciNum = 0; if (0 == Num) { return 0; } if (1 == Num) { return 1; } for (unsigned int i = 2; i <= Num; i++) { CurFibonacciNum = PrevFibonacciNum + PrevPrevFibonacciNum; PrevPrevFibonacciNum = PrevFibonacciNum; PrevFibonacciNum = CurFibonacciNum; } return CurFibonacciNum; } 因为是使用UnitTest测试代码,所以这里不创建main函数,而是将该类编译成lib方式,右击项目属性,将配置类型修改为lib: 接下来创建测试项目:右击解决方案-添加-新项目,选择本机单元测试项目: 然后添加引用,将刚才创建fibonacci项目添加进来 编写测试代码, #include "stdafx.h" #include "CppUnitTest.h" #include ".\..\ConsoleApplication3\Fibonacci.h" using namespace Microsoft::VisualStudio::CppUnitTestFramework; namespace FabonacciTest { TEST_CLASS(UnitTest1) { public: TEST_METHOD_INITIALIZE(SetUp) { Logger::WriteMessage("test Initialized!"); } TEST_METHOD(TestGetFibonacciRecursive) { // TODO: 在此输入测试代码 Assert::AreEqual<unsigned int>(0, Fibonacci::GetFibonacciRecursive(0)); Assert::AreEqual<unsigned int>(1, Fibonacci::GetFibonacciRecursive(1)); Assert::AreEqual<unsigned int>(1, Fibonacci::GetFibonacciRecursive(2)); Assert::AreEqual<unsigned int>(2, Fibonacci::GetFibonacciRecursive(3)); Assert::AreEqual<unsigned int>(13, Fibonacci::GetFibonacciRecursive(7)); Assert::AreEqual<unsigned int>(55, Fibonacci::GetFibonacciRecursive(10)); } TEST_METHOD(TestGetFibonacciNonRecursive) { // TODO: 在此输入测试代码 Assert::AreEqual<unsigned int>(0, Fibonacci::GetFibonacciNonRecursive(0)); Assert::AreEqual<unsigned int>(1, Fibonacci::GetFibonacciNonRecursive(1)); Assert::AreEqual<unsigned int>(1, Fibonacci::GetFibonacciNonRecursive(2)); Assert::AreEqual<unsigned int>(2, Fibonacci::GetFibonacciNonRecursive(3)); Assert::AreEqual<unsigned int>(13, Fibonacci::GetFibonacciNonRecursive(7)); Assert::AreEqual<unsigned int>(55, Fibonacci::GetFibonacciNonRecursive(10)); } TEST_METHOD_CLEANUP(TearDown) { Logger::WriteMessage("test completed!"); } }; } 选择菜单中的测试资源管理器 选择全部运行,就可以看到运行的结果: 也可以选择选择运行未通过的测试用例: 也可以调试选定的测试用例,可以打上断点调试 以上为VS2015提供给C++项目单元测试的方案,功能还是很强大的。
转载请注明原文地址: https://www.6miu.com/read-51754.html

最新回复(0)