您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > cppUnit
linux下cppunit的安装和使用
作者:网络转载 发布时间:[ 2014/1/3 9:42:06 ] 推荐标签:cppunit 开源 源代码

写好上面的代码后,接下来是编译的过程,有两种方式,一种是链接静态库,一种是链接动态库,下面是链接静态库,编译命令如下:
[root@testhost testexample]g++ -L /usr/local/lib/libcppunit.a hellolinux.cpp -lcppunit -ldl -o hellolinux
编译选项中需要增加 -lcppunit -ldl两个选项,-lcppunit是连接cppunit的库,而cppunit的库中使用了dl库里面的函数。接下来你可以运行一下,看看结果如何了:
[root@testhost testexample]# ./hellolinux
Test::testHelloWorldHello, world!
: OK

链接动态库,编译命令如下:
[root@testhost testexample]# g++ hellolinux.cpp -lcppunit -ldl -o hellolinux


另一例子,把如下的代码上传到一个目录,如math:
  
编译命令如下:
[root@testhost math]# g++ -L /usr/local/lib/libcppunit.a Main.cpp MathTest.cpp -lcppunit -ldl -o MathTest
然后执行:
[root@testhost math]# ./MathTest
..F


!!!FAILURES!!!
Test Results:
Run:  2   Failures: 1   Errors: 0


1) test: MathTest::testSub (F) line: 30 MathTest.cpp
assertion failed
- Expression: result == 1

整个的源代码如下:
/////////////////////////////////////////////////////////////////////
// Function: A simple Math test
// DATE    : 2008-1-16
// Author  : xulinlin
// Vesion  : V1.0
// FileName: MathTest.h
/////////////////////////////////////////////////////////////////////

//因为需要使用TestFixture这个类,所以引入HelperMacros.h头文件
#include "cppunit/extensions/HelperMacros.h"
//声明一个测试类
class MathTest : public CppUnit::TestFixture {
    // 添加一个TestSuite
    CPPUNIT_TEST_SUITE( MathTest );
    // 添加测试用例到TestSuite, 定义新的测试用例需要在这儿声明一下
    CPPUNIT_TEST( testAdd );
    CPPUNIT_TEST( testSub );
    // TestSuite添加完成
    CPPUNIT_TEST_SUITE_END();
protected:
    int x, y;      
public:
    MathTest() {}
    // 初始化函数
    void setUp ();
    // 清理函数
    void tearDown();
    // 测试加法的测试函数
    void testAdd ();
    // 测试减法的测试函数
    void testSub (); 
};

/////////////////////////////////////////////////////////////////////
// Function: A simple Math test
// DATE    : 2008-1-16
// Author  : xulinlin
// Vesion  : V1.0
// FileName: MathTest.cpp
/////////////////////////////////////////////////////////////////////
#include "MathTest.h"
// 把这个TestSuite注册到名字为"alltest"的TestSuite中, 如果没有定义会自动定义
// 也可以CPPUNIT_TEST_SUITE_REGISTRATION( MathTest );注册到全局的一个未命名的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 );
}

/////////////////////////////////////////////////////////////////////
// Function: Main file for test
// DATE    : 2008-1-16
// Author  : xulinlin
// Vesion  : V1.0
// FileName: Main.cpp
// Compile : g++ -L /usr/local/lib/libcppunit.a Main.cpp MathTest.cpp -lcppunit -ldl -o MathTest
/////////////////////////////////////////////////////////////////////
#include <cppunit/extensions/TestFactoryRegistry.h>
//使用文本执行器
#include <cppunit/ui/text/TestRunner.h>
// 如果不更改TestSuite, 本文件后期不需要更改.
int main()
{
        CppUnit::TextUi::TestRunner runner;
      
        // 从注册的TestSuite中获取特定的TestSuite, 没有参数获取未命名的TestSuite.
        CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry("alltest");
        // 添加这个TestSuite到TestRunner中
        runner.addTest( registry.makeTest() );
        // 运行测试
        runner.run();
}

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd