在刚学习单元测试章节的时候,尝试着使用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,解压
2)进入cppunit目录下src文件夹,用VS2013打开CppUnitLibraries文件,提示需要转换,选择确定;右键cppunit,选择属性,在弹出窗口将目标文件名由$(ProjectName)改为$(ProjectName)d 同样将cppunit_dll的目标文件名改成cppunitd_dll;将DllPlugInTester改成$(ProjectName)d_dll;将TestPlugInRunner的改成$(ProjectName)d;将TestRunner的改成$(ProjectName)d;
3)右键DSPlugin属性->配置属性->链接器->高级->无入口点,将“否”改为“是”;
4)打开TestRunner\UserInterface\MsDevCallerListCtrl.cpp,将version由7.0改为8.0;
5)在VS中选择生成->批生成,全选后点击生成;
等待编译结束,会有一些错误,只要最后进入lib文件夹下,出现cppunitd.lib即可。
至此,cppunit的安装编译成功。
若要正确的使用cppunit,需在新建项目时将include,lib文件夹包含进项目,具体如下:
至此,测试项目的基本环境的搭建算完成。
通过对老师给的若干例子进行测试,逐渐了解单元测试的框架。
1 #include <cppunit/extensions/HelperMacros.h> 2 3 class testRobotClass :public CppUnit::TextFixture 4 { 5 CPPUNIT_TEST_SUITE(testRobotClass); 6 CPPUNIT_TEST(testRobotClass1); //可有多个测试用例; 7 CPPUNIT_TEST(testRobotClass2); 8 CPPUNIT_TEST_SUITE_END(testRobotClass); 9 public: 10 void setUp(); 11 void tearDown(); 12 testRobotClass(); 13 ~testRobotClass(); 14 void testRobotClass1(); 15 void testRobotClass2(); 16 };
1 #include "test_RobotClass.h" 2 #include "RobotClass.h" 3 4 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(testRobotClass, "allTest"); 5 6 testRobotClass::testRobotClass() 7 { 8 9 }; 10 testRobotClass::~testRobotClass() 11 { 12 13 }; 14 void testRobotClass::setUp() 15 { 16 std::cout << "begin test" << std::endl; 17 }; 18 void testRobotClass::tearDown() 19 { 20 std::cout << "finish test" << std::endl; 21 }; 22 void testRobotClass::testRobotClass1() 23 { 24 ..... 25 }; 26 void testRobotClass::testRobotClass2() 27 { 28 29 ... 30 };
1 #include <cppunit/extensions/TestFactoryRegistry.h> 2 #include <cppunit/ui/text/TestRunner.h> 3 4 int main() 5 { 6 CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest(); 7 CppUnit::TextUi::TestRunner runner; 8 runner.addTest(suite); 9 return 0; 10 }
上述代码仅表示测试的框架结构,还有很多地方需要修改,明天继续学习测试方面的知识。