从网上下载了cppunit-1.12.1后,发现网上关于cppunit的使用方式说的有些问题,因此将自己使用的方式总结一下,当前只是简单使用。
1 使用继承自TestFixture的单元测试类
1.1 testPlannaer.hpp
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/TestFixture.h>
class TestPlanner : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(TestPlanner);
CPPUNIT_TEST(testPlannerGlobal1); //可有多个测试用例;
//CPPUNIT_TEST(testPlannerGlobal1_R);
CPPUNIT_TEST_SUITE_END();
public:
//初始化参数
void setUp();
//释放资源
void tearDown();
TestPlanner();
~TestPlanner();
//测试用例1系列 //测试全局规划
void testPlannerGlobal1();
public:
//测试中使用的通用数据
PlannerConfig m_pcfg;
PlanInfo m_pinfo;
};
1.2 TestPlanner.cpp
#include "TestPlanner.hpp"
#include <cppunit/TestSuite.h>
CPPUNIT_TEST_SUITE_REGISTRATION( TestPlanner );//使用此宏声明该类声明的所有测试案例可以在getRegistry()触发
//使用此宏声明该类声明的所有测试案例可以在getRegistry(“TestPlanner”)触发
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestPlanner , "TestPlanner");
void TestPlanner::setUp()
{
//在这里统一初始化所有案例中使用的配置 对象或资源
//m_pcfg.prior_place_laydiff = 20;
}
void TestPlanner::tearDown()
{
//在这里销毁所有初始化了的资源
}
TestPlanner::TestPlanner()
{
}
TestPlanner::~TestPlanner()
{
}
void TestPlanner::testPlannerGlobal1()
{
//在这里写测试用例,比如调用需要测试的接口
//使用CPPUNIT_ASSERT_XXXXXX来告诉CPPUNIT你测试的结果 也可以打印出错时输出的信息
CPPUNIT_ASSERT_EQUAL_MESSAGE("测试1_R结束 失败", -1, res);
}
1.3 main.cpp
#include "cppunit/TestResult.h"
#include "cppunit/TestResultCollector.h"
#include "cppunit/TestRunner.h"
#include "cppunit/XmlOutputter.h"
#include "cppunit/TextOutputter.h"
#include <cppunit/extensions/HelperMacros.h>
int main()
{
CppUnit::TestResult r;
CppUnit::TestResultCollector rc;
r.addListener(&rc); // 准备好结果收集器
CppUnit::TestRunner runner; // 定义执行实体
//指定运行特定的测试用例 使用了CPPUNIT_TEST_SUITE_NAMED_REGISTRATION声明了的SUITE,使用的名字是你声明时指定的名字
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestSpecPlanner").makeTest());
//运行所有使用CPPUNIT_TEST_SUITE_REGISTRATION声明的SUITE
// runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
runner.run(r); // 运行测试
CppUnit::XmlOutputter o(&rc, std::cout);
o.write(); // 将结果输出
system("pause");
return rc.wasSuccessful() ? 0 : -1;
}
当前我只使用到这个程序,许多其他在网上看到的功能暂未使用,使用后再写后续篇章