Cpputestを使ってみる - arosh/arosh.github.com GitHub Wiki

環境

Ubuntu 14.04 (amd64), cpputest3.4

導入

sudo apt-get install -y cpputest

HelloWorld

// hello.cpp
#include <CppUTest/CommandLineTestRunner.h>

int add(int a, int b) {
  return a + b;
}

TEST_GROUP(addG) {
  void setup() { }
  void teardown() { }
};

TEST(addG, addTest) {
  CHECK_EQUAL(2, add(1, 1));
}

int main(int argc, char *argv[]) {
  return CommandLineTestRunner::RunAllTests(argc, argv);
}
# Makefile
CXXFLAGS=-D_GLIBCXX_DEBUG -std=c++11 -Wall -Wextra -g
LDLIBS=-lCppUTest
  • setup()とteardown()はTESTごとに呼び出される (CHECKごとではなく)。
  • Assertionはいろいろあるけど(expedted, actual)の順なので注意
  • CHECK_EQUALはマクロによって実装されているので, actualに関数を書いたりすると、その関数が複数回呼び出される。モックで呼び出し回数をチェックしている時には注意(モックのテストを書くとか意味不明だけど)。CHECK_EQUALではなくLONG_EQUALを使えばこの問題は起こらない。[ref]