Mosh で googletest を使う事に
googletest - Google C++ Testing Frameworkを Mosh で使う事に。
- ダウンロード
- README と samples を見る。
- Mosh/gtest-1.2.1 に配置し Mosh に同梱する。
- 基本的な構造は理解。xUnit 相当のものはある。
- 5sec 以内にテストが終わらないとエラーというテストも書ける。特別な機能があるわけではないのか。(sample5_unittest.cc)
- テストコードの置き場所や命名規則は WEwLC に従う(テストコードは他のソースと同じ場所に置かれる)
- 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