Mosh で googletest を使う事に

googletest - Google C++ Testing FrameworkMosh で使う事に。

  1. ダウンロード
  2. README と samples を見る。
  3. Mosh/gtest-1.2.1 に配置し Mosh に同梱する。
  4. 基本的な構造は理解。xUnit 相当のものはある。
  5. 5sec 以内にテストが終わらないとエラーというテストも書ける。特別な機能があるわけではないのか。(sample5_unittest.cc)
  6. テストコードの置き場所や命名規則は WEwLC に従う(テストコードは他のソースと同じ場所に置かれる)
  7. Makefile のひな形は make/Makefile にある。

テストコード

#include <gtest/gtest.h>
#include "scheme.h"
#include "Object.h"
#include "Object-inl.h"
#include "Vector.h"
#include "VM.h"

using namespace scheme;

VM* theVM;

TEST(VectorTest, Ref) {
    Vector* v = new Vector(2, Object::Undef);

    EXPECT_TRUE(v->ref(0).isUndef());
    EXPECT_TRUE(v->ref(1).isUndef());
}

動いた。

dorami% ./test_vector
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from VectorTest
[ RUN      ] VectorTest.Ref
[       OK ] VectorTest.Ref
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran.
[  PASSED  ] 1 test.

課題

Unit test のはずなのに Build dependency が激しいので結局全てのコードをコンパイル・リンクしている。
どうするかな。Object.cpp は全てのクラスで使われていて、かつ種々のオブジェクトに依存しているのが問題。

追記

export GTEST_COLOR=1