poco库的简单实现单元测试

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"

//具有测试方法的测试类,继承与TestCase
class 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中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值