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

现在我们准备添加一些新的操作符和新的测试用例。这时使用一个fixture会很方便。如果我们实例化3到4个复数并在测试中反复使用它们,可能我们的测试会更好些。
我们这样做:
* 为fixture的每个部分添加成员变量。
* Override setUp() 初始化这些变量。
* Override tearDown()释放你在setUp()中使用的资源。

class ComplexNumberTest : public CppUnit::TestFixture {
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;
}
};

一旦我们拥有了这个fixture,我们可以添加操作符+,以及整个开发过程中其他的任何操作符。

Test Case
为了使用一个fixture来调用单独的测试,该如何做呢?
分为两个步骤:
*以一个method的形式,在fixture类中写一个测试用例
*创建TestCaller来运行那个method

这里是我们加了一些额外的用例method书写的测试类:
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 );
}
};

我们可以象下面这样为每个测试用例创建并运行一个实例:
CppUnit::TestCaller<ComplexNumberTest> test( "testEquality",
&ComplexNumberTest::testEquality );
CppUnit::TestResult result;
test.run( &result );

TestCaller的构造函数的第二个参数是ComplexNumberTest中对应method的地址。当这个TestCaller运行的时候,指定的method会运行。但是,这个办法也效果不彰,因为它不显示诊断信息。我们可以使用TestRunner(下面会讲到)来显示这个诊断信息。

一旦我们有了几个测试用例,可以把它们归入一个suite中。

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