UnitTest++

Exploring the C++ Unit Testing Framework Jungle

2004年時点のC++テストフレームワーク比較記事。理想的なテストフレームワークを求めて、CppUnitとその後継達を比べている。この記事は同じようにC++で何とかPainlessなUnitTestをしたい人々に参照されたようだ。

この記事を書いたNoel Llopisは、その後出てきたUnitTest++に携わっている。本家サイトから書き方の引用。かなり初心者には不親切な例だw

  • TESTマクロ一発でテストがかけて超簡単。
  #include <UnitTest++.h>

  TEST(FailSpectacularly)
  {
    CHECK(false);
  }

  int main()
  {
    return UnitTest::RunAllTests();
  }
  • FIXTUREサポート

Setup/Teardownメソッドを使うのではなく、フィクスチャにしたいクラスのコンストラクタとデストラクタを使うだけ。

  struct SomeFixture
  {
    SomeFixture() { testData = 99}
    ~SomeFixture() { /* some teardown */ }

    int testData;
  };
 
  TEST_FIXTURE(SomeFixture, YourTestName)
  {
    CHECK_EQUAL(testData, 99);
  }
  • SUITEマクロの中にTESTを書いていける。
  SUITE(YourSuiteName)
  {
    TEST(YourTestName)
    {
    }

    TEST(YourOtherTestName)
    {
    }
  }


cppunit以降の新しいフレームワークは、たいていテストの自己収集(Test Discovery)機能を持っている。UnitTest++も同様で、単にmainでUnitTest::RunAllTests()と書けばよい。
最近で一番注目度が高いのはgoogletestだろうと思うが、SUITE(Google TestではTestCase)の中にTestを書いていく方法としては、UnitTest++の書き方がなんとなく見やすい。

参照:
http://www.alittlemadness.com/?p=64