在剛學習單元測試章節的時候,嘗試着使用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 }
上述代碼僅表示測試的框架結構,還有很多地方需要修改,明天繼續學習測試方面的知識。
