きょこみのーと

技術に関係ないほうのブログ

cmakeとCppUTestの実行やってみる

cmakeとかとても便利ですね。

昔やってた仕事がゴリゴリMakefile書いてたの思い出しました(T_T)

ということで、最初に言っておきますが今回はCocos2d-x関係ないです。 C++とtestのお話です。

参考

上記書籍にでてくるサンプルコード github

brewでcpputestをinstallする

installされたディレクトリをメモっとく。/usr/local/Cellar/cpputest/3.5

$ brew install cpputest

$ brew info cpputest
cpputest: stable 3.5
http://www.cpputest.org/
/usr/local/Cellar/cpputest/3.5 (49 files, 852K) *
  Built from source
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/cpputest.rb

cpputestの環境パスを追加

~/.bash_profile

# CPPUTEST
export CPPUTEST_HOME=/usr/local/Cellar/cpputest/3.5

cmakeをbrewでインストールする

$ brew install cmake

たぶん2.8がinstallされる。

cpputestのサンプルをgit cloneする

$ git clone https://github.com/davisford/cmake-cpputest

サンプルプロジェクトをcmakeしてmakeする

$ cd cmake-cpputest
$ mkdir build
$ cd build
$ cmake ..
$ make

こんな警告ができるけど、とりあえず気にしない。(今はCppUtest実行するのが目標)

 warning: implicit declaration of function 'RuntimeError' is invalid in C99

100%で成功。

1 warning generated.
Linking C static library ../lib/libLedDriver.a
[ 20%] Built target LedDriver
[ 40%] Built target Tutorial
[ 60%] Built target RuntimeErrorStub
[ 80%] Built target LedDriverTest
Linking CXX executable ../bin/RunAllTests
[100%] Built target RunAllTests

テストを実行する

$ ./bin/RunAllTests  -v
TEST(LedDriver, AllOff) - 0 ms
TEST(LedDriver, AllOn) - 0 ms
TEST(LedDriver, OutOfBoundsLedsAreAlwaysOff) - 0 ms
TEST(LedDriver, IsOff) - 0 ms
TEST(LedDriver, IsOn) - 0 ms
TEST(LedDriver, OutOfBoundsProducesRuntimeError) - 0 ms
IGNORE_TEST(LedDriver, OutOfBoundsToDo) - 0 ms
TEST(LedDriver, OutOfBoundsTurnOffDoesNoHarm) - 0 ms
TEST(LedDriver, OutOfBoundsTurnOnDoesNoHarm) - 0 ms
TEST(LedDriver, UpperAndLowerBounds) - 0 ms
TEST(LedDriver, LedMemoryIsNotReadable) - 0 ms
TEST(LedDriver, TurnOffAnyLed) - 0 ms
TEST(LedDriver, TurnOnMultipleLeds) - 0 ms
TEST(LedDriver, TurnOffLedOne) - 0 ms
TEST(LedDriver, TurnOnLedOne) - 0 ms
TEST(LedDriver, LedsAreOffAfterCreate) - 0 ms

OK (16 tests, 16 ran, 20 checks, 0 ignored, 0 filtered out, 1 ms)

わーい。Testできたー(小並感

おわり

とりあえず、cmakeが何ぞ?とか細かいこととかどうなってるかとか今は気にしない。

(基本的に、動くものを用意してそこからイジりながら理解する派なので。。。)

もし次があれば、これをベースに適当にCocos2d-xのソースをテストしみようかなーとか思ってる。