1. 安装
- 下载
cpptest-版本号.tar.gz
- 解压
tar -zxvf cpptest-版本号.tar.gz
- 进入目录
cpptest-版本号
- 配置
./configure
- 编译
make
- 安装
sudo make install
- 添加共享库目录
/usr/local/lib
到共享库配置文件sudo echo /usr/local/lib >> /etc/ld.so.conf sudo ldconfig
2. 使用
- 引入测试头文件
#include "cpptest.h"
- 继承
Test::Suite
编写套件类 - 给套件类添加测试成员函数
- 使用宏定义
TEST_ADD
注册测试成员函数 - 编译执行
3. 示例
test.cpp
#include "cpptest.h"
class MyTest:public Test::Suite{
public:
MyTest(){
TEST_ADD(MyTest::test_case1);
TEST_ADD(MyTest::test_case2);
}
private:
void test_case1(){
TEST_FAIL ("This always fails!\n");
}
void test_case2(){
TEST_FAIL ("This always fails!\n");
}
};
int main ( ) {
MyTest test;
Test::HtmlOutput output;
test.run(output,true);
output.generate(std::cout, true, "MyTest");
return 0;
}
- 编译
g++ -o test test.cpp -lcpptest
如果配置时指定
--prefix /usr/local/cpptest
,编译命令为g++ -o test test.cpp -I/usr/local/cpptest/include -L/usr/local/cpptest/lib -lcpptest
。
- 执行
./test > test.html
4. 说明
4.1 测试输出格式
格式 | 含义 |
---|---|
Test::TextOutput |
显示模式可以是详细或简洁。 |
Test::CompilerOutput |
编译器构建日志相似的方式生成输出。 |
Test::HtmlOutput |
生成 HTML 输出。 |
4.2 常用的测试宏
测试宏 | 含义 |
---|---|
TEST_FAIL (message) |
无条件地产生失败,并停止执行 |
TEST_ASSERT (expression) |
如果表达式的结果是false ,打印一个错误 |
TEST_ASSERT_MSG (expression, message) |
与TEST_ASSERT (expression) 相似,只是错误打印信息 |
TEST_THROWS (expression, exception) |
如果没有捕捉到异常,就触发断言 |
TEST_THROWS_MSG (expression, exception, message) |
与TEST_THROWS (expression, exception) 相似,只是错误打印信息 |
exception是异常类型,不是异常对象。
5. 注意
如果编译时出现如下错误:
array_test.cpp:(.text._ZN9ArrayTestC2Ev[_ZN9ArrayTestC5Ev]+0xa0): undefined reference to `Test::Suite::register_test(void (Test::Suite::*)(), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
是因为cpptest不支持c++11,所以要关闭c++11特性。编译时加上如下宏定义。
-D_GLIBCXX_USE_CXX11_ABI=0