您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > cppUnit
CppUnit Cookbook中文版
作者:网络转载 发布时间:[ 2014/1/2 10:04:17 ] 推荐标签:CppUnit 单元测试

下面是使用这些宏重写了类ComplexNumberTest后的代码:
#include <cppunit/extensions/HelperMacros.h>

class ComplexNumberTest : public CppUnit::TestFixture {

首先我们声明这个suite,把这个类的名字传递给宏:
CPPUNIT_TEST_SUITE( ComplexNumberTest );

这个使用静态的suite() method建立的suite以类的名字来命名。然后,我们为每个测试用例声明:
CPPUNIT_TEST( testEquality );
CPPUNIT_TEST( testAddition );

后,我们结束这个suite声明:
CPPUNIT_TEST_SUITE_END();

在这里下面这个method已经被实现了:
static CppUnit::TestSuite *suite();

剩下的fixture保持不动:
private:
Complex *m_10_1, *m_1_1, *m_11_2;
protected:
void setUp()
{
m_10_1 = new Complex( 10, 1 );
m_1_1 = new Complex( 1, 1 );
m_11_2 = new Complex( 11, 2 );
}

void tearDown()
{
delete m_10_1;
delete m_1_1;
delete m_11_2;
}

void testEquality()
{
CPPUNIT_ASSERT( *m_10_1 == *m_10_1 );
CPPUNIT_ASSERT( !(*m_10_1 == *m_11_2) );
}

void testAddition()
{
CPPUNIT_ASSERT( *m_10_1 + *m_1_1 == *m_11_2 );
}
};

加入这个suite的TestCaller的名字是这个fixture名字和method名字的组合。
对目前这个用例来说,名字会是"ComplexNumberTest.testEquality" 和"ComplexNumberTest.testAddition".

helper macros帮你写些常用的断言。例如。检查当一个数被零除的时候ComplexNumber是否会抛出MathException异常:
*把这个测试用例加入使用CPPUNIT_TEST_EXCEPTION的suite中,指定希望的异常的类型。
*写这个测试用例的method

CPPUNIT_TEST_SUITE( ComplexNumberTest );
// [...]
CPPUNIT_TEST_EXCEPTION( testDivideByZeroThrows, MathException );
CPPUNIT_TEST_SUITE_END();

// [...]

void testDivideByZeroThrows()
{
// The following line should throw a MathException.
*m_10_1 / ComplexNumber(0);
}

如果期望的异常没有被抛出,这个断言会失败。

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