1.CppUnit使用
函数 | 使用 |
---|---|
Fixture | 一个或一组测试用例的测试对象。可以是你要测试的对象或者函数。 |
TestCase | 测试用例。是对测试对象的某个功能或流程编写的测试代码。对一个Fixture,可能有多个测试用例。 |
TestSuite | 同时运行的测试用例的集合。可以是一个fixture的多个测试函数、也可以是多个fixture的所有测试用例。 |
使用时,在测试的主文件中将TestCase注册到TestSuite中,并运行。 |
流程图:
2.CppUnit实例
新建MathTest头文件.h
class MathTest : public CppUnit::TestFixture {
// 添加一个TestSuite
CPPUNIT_TEST_SUITE( MathTest );
// 添加测试用例到TestSuite, 定义新的测试用例需要在这儿声明一下
CPPUNIT_TEST( testAdd );
CPPUNIT_TEST( testSub );
CPPUNIT_TEST_SUITE_END();
protected:
int x, y;
public:
MathTest() {}
// 初始化函数
void setUp ();
// 清理函数
void tearDown();
// 测试加法的测试函数
void testAdd ();
// 测试减法的测试函数
void testSub ();
};
#endif //WW_TEST_MATHTEST_H
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
新建MathTest实现类.cpp
//将TestSuite注册到一个名为alltest的TestSuite中
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(MathTest,"alltest");
void MathTest::setUp()
{
x = 2;
y = 3;
}
void MathTest::tearDown()
{
}
void MathTest::testAdd()
{
int result = x + y;
CPPUNIT_ASSERT( result == 5 );
}
void MathTest::testSub()
{
int result = x + y;
CPPUNIT_ASSERT( result == 1 );
}
#include "MathTest.h"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
main类
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/CompilerOutputter.h>
#include <cppunit/BriefTestProgressListener.h>
#pragma comment (lib,"cppunitd.lib");//静态
#pragma comment(lib,"testrunnerud.lib");
int main()
{
CppUnit::TextUi::TestRunner runner;
// 增加监听器,eventManager返回TestResult类的对象,维护一个Listener集合,Listener将决定测试过程表现,包括日志输出格式
CPPUNIT_NS::BriefTestProgressListener progress;
// 从注册的TestSuite中获取特定的TestSuite, 没有参数获取未命名的TestSuite.
CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry("alltest");
// 添加这个TestSuite到TestRunner中
runner.addTest( registry.makeTest() );
// 设置输出,注意对象被runner释放
runner.setOutputter(new CPPUNIT_NS::CompilerOutputter(&runner.result(), std::cerr));
//运行程序
runner.run();
}
3.编译程序
输入一下命令,进行编译
g++ -L /usr/local/lib/libcppunit.a main.cpp MathTest.cpp -lcppunit -ldl -o MathTest
/usr/local/lib/libcppunit.a为安装CppUnit是的libcppunit.a路径
main.cpp 、MathTest.cpp为要编译的cpp文件
MathTest为编译生成的可执行文件
运行:./MathTest
运行结果如下
查看编译完成后,MathTest具体实现
g++ -E MathTest.cpp -o MathTest.E
- 1
使用gedit打开MathTest.E文件
sudo gedit./MathTest.E
- 1