poco库的简单实现单元测试

来源:互联网 发布:淘宝上如何收烟丝 编辑:程序博客网 时间:2024/06/05 03:48

Ctest.h文件。被测试的类

#pragma once#include<iostream>//被测试的类class Ctest{public:int testadd(int a, int b);char Str();void test();};


Ctest.cpp文件。被测试的类
#include "Ctest.h"int Ctest::testadd(int a, int b){return a + b;}char Ctest::Str(){return 'c';}void Ctest::test(){throw std::exception("Ctest exception.");}
TestcaseSon.h文件。实现单元测试的类,继承自testcase中

#pragma once#include "Poco/CppUnit/TestCase.h"#include "Poco/CppUnit/TestCaller.h"#include "Poco/CppUnit/TestSuite.h"#include "Ctest.h"//具有测试方法的测试类,继承与TestCaseclass TestcaseSon :public CppUnit::TestCase{public:TestcaseSon(const std::string& name);~TestcaseSon();void Tadd();void Tstr();void Tt();void setUp();void tearDown();static CppUnit::Test* suite();};



TestcaseSon.cpp文件。实现单元测试的类,继承自testcase中

#include"TestcaseSon.h"TestcaseSon::TestcaseSon(const std::string& name) :CppUnit::TestCase(name){}TestcaseSon::~TestcaseSon(){}void TestcaseSon::Tadd(){Ctest add;int a = add.testadd(10, 20);assert(30 ==a);//这个函数是获取发生错误的具体行数断言,注意:如果在代码中使用C ++宏“assert()”,或者包含assert.h,则可能与CppUnit的断言宏有名称冲突   //这可以通过将测试名称更改为“cu_assert()”在TestCase.h中得到补救。//assertEquals(1.3, 1.3);}void TestcaseSon::Tstr(){Ctest str;assert(str.Str()=='c');}void TestcaseSon::Tt(){Ctest tt;try{tt.test();fail("will not run");}catch (std::exception& ){}}void TestcaseSon::setUp(){}void TestcaseSon::tearDown(){}CppUnit::Test* TestcaseSon::suite(){//TestSuite这个类可以添加多个测试或者多个测试套件一起运行,下例是添加多个测试CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("TestcaseSonSuite");CppUnit_addTest(pSuite, TestcaseSon, Tadd);CppUnit_addTest(pSuite, TestcaseSon, Tstr);CppUnit_addTest(pSuite, TestcaseSon, Tt);return pSuite;}

main文件,运行单元测试结果并打印

#include"Ctest.h"#include "TestcaseSon.h"#include "Poco/CppUnit/TestRunner.h"#include "Poco/CppUnit/TextTestResult.h"#include "Poco/CppUnit/TestSuite.h"int main(){// 最终的suite,将其他suite都添加到里面来一起运行CppUnit::TestSuite* Pstuite = new CppUnit::TestSuite("main");Pstuite->addTest(TestcaseSon::suite());// 如果有其他的suite(套件)也添加进来//一个基于命令行的工具来运行测试//TestRunner在执行测试后打印出结果CppUnit::TestRunner TestRun;TestRun.addTest("main", Pstuite);std::vector<std::string> arg;//命令行参数arg.push_back("drive");arg.push_back("-all");arg.push_back("-print");TestRun.run(arg);system("pause");return 0;}

打印结果如下:




TestcaseSon.h文件。实现单元测试的类,继承自testcase中
原创粉丝点击