基于MFC的Cppunit测试用例编写步骤

发表于:2013-10-11 11:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:zhaixh_89    来源:51Testing软件测试网采编

  软件测试驱动开发(TDD)是以测试作为开发过程的中心,他是极限编程的重要组成部分,XUnit是一个基于测试驱动开发的测试框架,其成员很多包括:JUnit,PythonUint等,CppUint是其中一个专门面向c++的测试框架。
  在CppUnit中最小的测试单元称为测试方法(TestMethod),多个测试方法又可以组成一个测试用例(TestCase),多个测试用例又组成一个测试包(TestSuite)
  CppUnit提供了两种测试环境,一种基于文本,一种基于GUI,在基于GUI的测试环境中,若测试不成功,进度条显示红色,反之则为绿色。
  Vs环境下CppUnit开发的基本流程(MFC方式的TestRunner)
  首先在所建工程中App的Instance()中屏蔽掉原有的对话框,代之以CppUnit的GUI,一般为以下形式:
  CppUnit::MfcUI::TestRunner runner;
  Runner.addTest(PlusTest::suite());//添加测试
  runner.run();//显示UI
  // PlusTest::suite()该函数返回一个指向CppUnit::Test的指针,这个指针就是整个测试的起点,CppUnit::TestFactoryRegistry()根据TestSuite的名称返回TestFactoryRegistry工厂,然后调用工厂里的makeTest()对TestSuite进行组装,这是一个递归调用,将建立起一个树状的测试结构
  然后在工程头文件中建立一个PlueTest.h的头文件用以得到工厂并调用MakeTest函数
  形式如下:
#include "cppunit/extensions/TestFactoryRegistry.h"
namespace PlusTest
{
CppUnit::Test*suite()
{
CppUnit::TestFactoryRegistry&registry =
CppUnit::TestFactoryRegistry::getRegistry("name");
return registry.makeTest();
}
}
  Cpp文件所需头文件为:
#include "cppunit/ui/mfc/TestRunner.h"
#include "cppunit/extensions/TestFactoryRegistry.h"
#include "PlusTest.h"
然后在工程中添加一个类,例如为:CplusTestCase
代码如下:
#include <apr.h>
#include <cppunit/TestCase.h>
#include <cppunit/extensions/HelperMacros.h>
#include <unicode/unistr.h>
#pragma comment(lib,"icuuc.lib")
class CPlusTestCase :publicCppUnit::TestCase
{
//通过这几个宏将类CPlusTestCase和方法testFind注册到了测试列表中了
//开始创建一个TestSuite(测试包)
CPPUNIT_TEST_SUITE(CPlusTestCase);
//添加TestCase(测试用例)
CPPUNIT_TEST(testFind);
//结束创建TestSuite
CPPUNIT_TEST_SUITE_END();
public:
//!\brief Set up context before running a test
virtual void setUp();//初始化数据成员
//!Clean up after the test run.
virtual void tearDown();//释放清理工作
CPlusTestCase(void);
~CPlusTestCase(void);
//测试方法
void testFind();
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号