CppUnit在Linux环境下编译与使用
CppUnit是一个开源的单元测试框架,支持Linux和Windows操作系统,本文将详细介绍如何在Linux环境下编译并使用CppUnit,帮助开发人员更好地进行C++代码测试,以下是详细步骤:
下载与解压源码
1、下载源码:
从CppUnit官方网站或其他可信资源下载最新版本的源码包,cppunit-1.12.0.tar.gz。
2、解压缩文件:
tar -zxvf cppunit-1.12.0.tar.gz
该命令会将源码解压到当前目录。
3、进入源码目录:
cd cppunit-1.12.0
配置与编译源码
1、生成Makefile文件:
运行以下命令以生成Makefile文件:
./configure --prefix=/usr/local
这里--prefix=/usr/local
表示安装路径为/usr/local,可以根据需要修改此路径。
2、编译源码:
make
该命令将根据生成的Makefile文件编译源码,如果一切顺利,没有错误信息,说明编译成功。
3、安装CppUnit:
sudo make install
该命令将把编译好的库文件和头文件安装到指定的目录下。
配置链接库路径
1、编辑链接库配置文件:
使用vi命令编辑/etc/ld.so.conf文件:
sudo vi /etc/ld.so.conf
在该文件中添加一行:
/usr/local/lib
2、重新加载配置文件:
sudo ldconfig
该命令使系统重新加载链接库配置文件,确保新安装的库可以被找到。
编写测试代码
下面是一个简单的示例,展示如何使用CppUnit编写和运行单元测试,假设我们有一个被测类Vertex。
1、创建被测类的头文件vertex.h:
#ifndef DIJKSTRA_H #define DIJKSTRA_H struct Vertex { public: char label; // label (e.g. 'A') bool wasVisited; bool isInTreeVerts; Vertex( char lab ) : label(lab), wasVisited(true), isInTreeVerts(true) {} }; // end struct Vertex #endif // DIJKSTRA_H
2、创建测试类的头文件GraphTest.h:
#include "dijkstra.h" #include "cppunit/TestFixture.h" class GraphTest : public CppUnit::TestFixture { protected: Vertex * m_vertex; public: GraphTest() {} void setUp (); void tearDown(); void testConstructor (); };
3、实现测试类的源文件GraphTest.cpp:
#include "GraphTest.h" #include "cppunit/TestAssert.h" void GraphTest::setUp() { m_vertex = new Vertex( 'V' ); } void GraphTest::tearDown() { delete m_vertex ; } void GraphTest::testConstructor() { CPPUNIT_ASSERT( m_vertex->label == 'V' ); CPPUNIT_ASSERT( m_vertex->wasVisited == true ); CPPUNIT_ASSERT( m_vertex->isInTreeVerts == true ); }
4、编写主程序main.cpp:
#include "GraphTest.h" #include "cppunit/ui/text/TestRunner.h" #include "cppunit/TestCaller.h" #include "cppunit/TestSuite.h" int main() { CppUnit::TextUi::TestRunner runner; CppUnit::TestSuite *suite = new CppUnit::TestSuite(); suite->addTest(new CppUnit::TestCaller<GraphTest>("testConstructor", &GraphTest::testConstructor)); runner.addTest( suite ); //指定运行TestSuite runner.run( "", true ); //开始运行, 自动显示测试进度和测试结果 }
5、编译测试程序:
g++ -g -L/usr/local/lib -lcppunit -ldl -I/usr/local/include main.cpp GraphTest.cpp -o test
6、运行测试程序:
./test
输出结果应显示测试通过的信息。
常见问题解答(FAQs)
1、问题:编译时出现“error while loading shared libraries: libcppunit-1.10.so.2: cannot open shared object file”错误怎么办?
回答:这个问题通常是因为动态链接库路径未正确配置,解决方法是确保/usr/local/lib路径已添加到/etc/ld.so.conf文件中,并运行sudo ldconfig
命令重新加载配置文件。
2、问题:非Root用户如何安装CppUnit?
回答:非Root用户可以在安装过程中指定一个自定义的安装路径,在运行./configure
命令时使用--prefix=$HOME/cppunit
参数,然后在编译和链接时使用相应的路径。
g++ -g -L$HOME/cppunit/lib -lcppunit -ldl -I$HOME/cppunit/include main.cpp GraphTest.cpp -o test