一、CppUnit linux 安装
CppUnit测试框架的源代码可以到 http://sourceforge.net/projects/cppunit/上下载,当前高版本为cppunit-1.12.0.tar.gz。 上传到linux服务器的某一个目录下(比如事先建立的/home/cppunit目录下)。接下来的步骤是在linux安装cppunit(我这里的版本RedHat是内核版本是2.4.20-8)
[root@testhost testexample]# uname -a
Linux testhost 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux)。
第一步:解压文件
gzip –d cppunit-1.12.0.tar.gz
tar –xvf cppunit-1.12.0.tar
第二步:编译cppunit的源代码(在windows下我们也要编译它)
跳转到源文件的目录:cd ./ cppunit-1.12.0
生成make file文件,使用命令(需要查看configure详细命令可以输入info configure): ./configure (说明:$(CPPUNITSETUPDIR)表示安装目录(root用户安装缺省为/usr/local,没有超级用户权限的可以安装在自己建立的目录下))
然后安装: make
然后检查安装可以跳过: make check
然后: make install (说明,make install并没有把头文件安装到/usr/include目录中,此时我们可以先把/home/cppunit/cppunit-1.12.0/include目录下的cppunit目录归档,使用命令tar -cvf cppunit.tar ./cppunit ,然后使用mv 命令把它移动到/usr/include目录下,然后在/usr/include目录下使用tar -xvf cppunit.tar 解规档即可。这样的做法有点类似于在VC环境下配置include的目录一样)在make check时可能会出现错误信息,可以不用管它。make install主要是将生成的静态链接库libcppunit.a和动态链接库libcppunit.so拷贝到$(CPPUNITSETUPDIR)/lib目录下,将头文件拷贝到$(CPPUNITSETUPDIR)/include目录下。
第三步:配置链接库路径,如果不配置路径可能会出现以下类似错误:error while loading shared libraries: libcppunit-1.10.so.2: cannot open shared object file: No such file or directory 实际上是找不到链接库,所以接下来我们使用vi 命令修改一下链接库配置文件/etc/ld.so.conf文件(呵呵,顺便说下,一般的配置文件都在/etc目录下)。在其中加入一行如下:/usr/local/lib (说明:make install时把链接库文件复制到/usr/local/lib目录下了,在windows下我们同样需要配置库的搜索路径。),忘了告诉你,为了使配置文件生效,您还需要使用ldconfig命令重新装载一下可以了。可以使用:[root@testhost lib]# ldconfig -v | grep cppunit检查是否配置成功,到此为止,cppunit在linux下算完全安装完成了。为了验证是否能正常工作,下面例子可以帮助你:
二、 CppUnit linux 使用
下面的测试代码来源于[url]www.cppunit.sourceforge.net[/url]
#include <iostream>
#include <cppunit/TestRunner.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
class Test : public CPPUNIT_NS::TestCase
{
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testHelloWorld);
CPPUNIT_TEST_SUITE_END();
public:
void setUp(void) {}
void tearDown(void) {}
protected:
void testHelloWorld(void) { std::cout << "Hello, world!" << std::endl; }
};
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
int main( int argc, char **argv )
{
// Create the event manager and test controller
CPPUNIT_NS::TestResult controller;
// Add a listener that colllects test result
CPPUNIT_NS::TestResultCollector result;
controller.addListener( &result );
// Add a listener that print dots as test run.
CPPUNIT_NS::BriefTestProgressListener progress;
controller.addListener( &progress );
// Add the top suite to the test runner
CPPUNIT_NS::TestRunner runner;
runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
runner.run( controller );
return result.wasSuccessful() ? 0 : 1;
}