Simple Test Case

如何確認你的程式碼是否有照你想像的運作?

其實有很多種法。一步步的透過debugger檢查或使用一些另外寫的鷹架程式碼來輸出結果,是兩個簡單而常見的做法,但它們都有缺點。一步步的透過debugger是一個好主意,但它不會主動的告訴你程式碼的狀況。每次修改都得檢查一次。鷹架程式碼也不錯,但是它讓程式碼醜掉了,它會在你不需要訊息的時機產生訊息。

用CppUnit進行測試,會自動回報程式碼狀況。單元測試很容易建立,而且只要你有寫,就會來帶程式碼愈改品質愈高的信心。

一個簡單的測試程式,可以這樣做:

衍生自TestCase類別。Override runTest()。呼叫CPPUNIT_ASSERT(bool)有要確認的值當參數,傳入true代表測試通過。

例如,下面這個「是否相等」的測試 比較Complex(複數)類別是否相等的測試:

class ComplexNumberTest : public CppUnit::TestCase
{ 
public: 
    ComplexNumberTest(std::string name)
    : CppUnit::TestCase( name ) {}

    void runTest()
    {
        CPPUNIT_ASSERT( Complex (10, 1) == Complex (10, 1) );
        CPPUNIT_ASSERT( !(Complex (1, 1) == Complex (2, 2)) );
    }
};

這是一個非常簡單的測試。通常你會對同一個物件進行許多小小的test case。要做到這一點,用一個fixture把它們裝起來。

意譯

  • littering your code with stream output 一些另外寫的鷹架程式碼

  • streaming out text 鷹架程式碼

  • it is not automatic 它不會主動的告訴你程式碼的狀況

譯註

  • treaming 應該是streaming的筆誤

  • expression 表達式 運算式

  • Complex number class 複數類別,我覺得翻成「Complex(複數)類別」比較好

  • Override 覆寫

Last updated