C++ 單元測試工具 CppUnitTest

來源:互聯網
上載者:User
 

CppUnit 是開放原始碼的測試載入器,來源於 Java 版本的 JUnit。單元測試在極限編程理論中有非常重要的作用。即使不採用極限編程方式,每個軟體工程師應該寫測試程式、準備測試資料、測試自己寫的軟體模組能夠運行。

CppUnit 可以用來同時測試多個軟體模組,並且顯示有多少成功、多少失敗。有命令列方式運行,VC 寫的 GUI 程式介面,也有 QT 的 GUI 程式介面。以下是 VC 運行介面。

如果您想用 CppUnit 來進行軟體測試的話,可以到 CppUnit 在 Sourceforge 上面的網站下載原代碼,裡面有樣本程式。

我們可以從 cppunit-1.10.2/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsw 改造入手,全部編譯後,將原有的 cppunit、DSPlugIn、TestRunner 幾個project 刪除,只留下CppUnitTestApp project。在 VC 的 File View 將原有的 DLL Dependencies,Tests 刪除。然後增加自己的測試程式。

測試的 C++ 代碼都必須加入到這個 Project ,如果用 C++ Builder 就只能用那個命令列的版本了。如果有失敗的測試單元,則顯示是哪些測試單元。

一般的測試單元,寫一個 CPPUNIT_NS::TestCase 的子類,裡面寫一個或者多個 testXXX 函數。在 testXXX 中調用正式代碼:

void testXXX(){
    int result = myFun(1,2);
    CPPUNIT_ASSERT_EQUAL(result,7);

    result = myFun(10,70);
    CPPUNIT_ASSERT_EQUAL(result,9);
}

每個 test 函數算一個測試基本元素。如果它裡面的所有 assert 都成功,這個 test 函數才算通過。

通常來說,測試所用的資料,一般不用寫在原始碼中,而是寫在 xml 或者 ini 或者其他檔案中。這樣的好處是測試時更改測試資料,不用重新編譯器,方便測試。

比較通用的方法是,寫一個 BaseTestCase 類,裡面處理好資料讀入、輸出,其它測試單元都從這個 BaseTestCase 繼承。

相對於 JUnit 而言,CppUnit 的不方便之處是新的測試程式需要加入測試 project,對於很多人同時在寫測試單元的時候,大家都在等別人修改完了測試 project自己才能進行,不太好。相對而言,Java 測試程式可以不需要任何 project 檔案。變通的方法是,將測試 project 拆分成多個子 project ,但是這樣一來就無法在一個測試程式中運行所有的測試。

CppUnit 的好處是運行速度比較快。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.