Wince和Windows Mobile下native C++的單元測試

來源:互聯網
上載者:User

單元測試(Unit Test)已經成為開發過程中不可分割的一部分,也是refactoring的基礎,在Wince和Windows Mobile開發native  C++時可以使用CppUnitLite進行單元測試。

在其他平台開發C++的時候,我一直使用CppUnit進行單元測試,可是CppUnit不支援Wince平台,因此在Wince下選擇CppUnitLite進行單元測試。CppUnitLite是CppUnit的作者Michael Feathers重新開發的針對C++的單元測試架構。其開發目的是更加簡便的開發單獨的測試案例(只是需要一個TEST的宏就自動註冊測試,而不需要同時並且分別使用函數,標頭檔和註冊三個不同的檔案。)同時CppUnitLite去掉C++的一些新特性,例如RTTI, exceptions, and templates,所以CppUnitLite更容易移植,CppUnitLite完全支援Wince和Windows Mobile。

 
環境搭建

下面講述CppUnitLite在Wince和Windows Mobile下環境的搭建。

先從http://www.objectmentor.com/resources/bin/CppUnitLite.zip下載CppUnitLite。

建立一個Smart Device的項目

 

 選擇相應的平台,由於這是native的庫,所以編譯的Output與平台相關,使用時需要選擇相應的平台。

 

 選擇Static Library並取消Precompiled header的選項。

 

把下載的檔案中/om/CppUnitLite/下的所有檔案拷貝到項目目錄CppUnitLite下,把CppUnitLite下的所有.h和.cpp加入項目中

 

編譯後產生靜態庫CppUnitLite.lib。

 

使用CppUnitLite

在需要進行單元測試的項目下建立一個檔案夾叫做CppUnitLite,把需要的標頭檔拷貝到這個檔案夾下。


在Linker裡面增加依賴庫 CppUnitLite.lib

 

#include "CppUnitLite\TestHarness.h"

#include <string>

int _tmain(int argc, _TCHAR* argv[])
{
    TestResult tr;
    TestRegistry::runAllTests(tr);

    return 0;
}

SimpleString StringFrom(const std::string& value)
{
    return SimpleString(value.c_str());
}

class ClassA
{
public:
  int Method1() 
  {
    return 5;
  }

  double Method2() 
  {
    return 1.88587;
  }

  std::string Method3() 
  {
    return "string1";
  }

  bool Method4() 
  {
    return true;
  }

};

TEST( Stack, test_simple )
{
  ClassA a;
  
  LONGS_EQUAL(5, a.Method1());
  DOUBLES_EQUAL(1.9, a.Method2(), 0.1);
  CHECK_EQUAL("string", a.Method3());
  CHECK(!a.Method4());
}

 

TEST用於定義測試類別,第一個參數為測試名,一般使用類名字,第二個為測試分組名字。 LONGS_EQUAL用於整型比較,DOUBLES_EQUAL用於浮點數的比較,第三個參數為精度。CHECK_EQUAL用於字串的比較,由於CppUnitLite不依賴於STL,所以需要StringFrom函數來轉換std::string到CppUnitLite的string類。CHECK是邏輯比較,這個宏可以用於任何的比較,例如有一個類重載了==(等號操作符),那麼可以使用CHECK來比較。

 

參考文獻 

Cpp Unit Lite

Windows Mobile Native Unit Testing

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.