单元测试篇----cppUnit的安装与使用

时间:2023-03-09 09:32:21
单元测试篇----cppUnit的安装与使用

  在刚学习单元测试章节的时候,尝试着使用dev—c++来编译cppunit,但一直没成功,也尝试问过同学,一直没有很好的方法,因此浪费了不少时间。今天又耐心的尝式一下,意外成功了。以下是详细的安装步骤:

(cppunit版本是cppunit-1.12.1.tar.gz,下载链接http://downloads.sourceforge.net/cppunit/cppunit-1.12.1.tar.gz,Windows,VS2013)

1)下载cppunit-1.12.1.tar.gz,解压

单元测试篇----cppUnit的安装与使用

2)进入cppunit目录下src文件夹,用VS2013打开CppUnitLibraries文件,提示需要转换,选择确定;右键cppunit,选择属性,在弹出窗口将目标文件名由$(ProjectName)改为$(ProjectName)d 同样将cppunit_dll的目标文件名改成cppunitd_dll;将DllPlugInTester改成$(ProjectName)d_dll;将TestPlugInRunner的改成$(ProjectName)d;将TestRunner的改成$(ProjectName)d;

单元测试篇----cppUnit的安装与使用

单元测试篇----cppUnit的安装与使用

3)右键DSPlugin属性->配置属性->链接器->高级->无入口点,将“否”改为“是”;

单元测试篇----cppUnit的安装与使用

4)打开TestRunner\UserInterface\MsDevCallerListCtrl.cpp,将version由7.0改为8.0;

单元测试篇----cppUnit的安装与使用

5)在VS中选择生成->批生成,全选后点击生成;

等待编译结束,会有一些错误,只要最后进入lib文件夹下,出现cppunitd.lib即可。

单元测试篇----cppUnit的安装与使用

至此,cppunit的安装编译成功。

若要正确的使用cppunit,需在新建项目时将include,lib文件夹包含进项目,具体如下:

单元测试篇----cppUnit的安装与使用

单元测试篇----cppUnit的安装与使用

至此,测试项目的基本环境的搭建算完成。

通过对老师给的若干例子进行测试,逐渐了解单元测试的框架。

 #include <cppunit/extensions/HelperMacros.h>

 class testRobotClass :public CppUnit::TextFixture
{
CPPUNIT_TEST_SUITE(testRobotClass);
CPPUNIT_TEST(testRobotClass1); //可有多个测试用例;
CPPUNIT_TEST(testRobotClass2);
CPPUNIT_TEST_SUITE_END(testRobotClass);
public:
void setUp();
void tearDown();
testRobotClass();
~testRobotClass();
void testRobotClass1();
void testRobotClass2();
};

test_RobotClass.h

 #include "test_RobotClass.h"
#include "RobotClass.h" CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(testRobotClass, "allTest"); testRobotClass::testRobotClass()
{ };
testRobotClass::~testRobotClass()
{ };
void testRobotClass::setUp()
{
std::cout << "begin test" << std::endl;
};
void testRobotClass::tearDown()
{
std::cout << "finish test" << std::endl;
};
void testRobotClass::testRobotClass1()
{
.....
};
void testRobotClass::testRobotClass2()
{ ...
};

test_RobotClass.c

 #include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h> int main()
{
CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
CppUnit::TextUi::TestRunner runner;
runner.addTest(suite);
return ;
}

testmain.cpp

上述代码仅表示测试的框架结构,还有很多地方需要修改,明天继续学习测试方面的知识。