Mac
googletest

Google Test を Mac OS X El Capitan にインストールしてC言語のテストに使う

https://github.com/google/googletest/tree/master/googletest

ビルド

$ git clone git@github.com:google/googletest.git

$ mkdir mybuild       # Create a directory to hold the build output.
$ cd mybuild
$ cmake ../googletest/googletest/  # Generate native build scripts.
$ make
  • libgtest.a
  • libgtest_main.a

がこれでビルドされる。

テスト作成

func.c func.h に実装した some_func() をテストする。

func.c
#include <stdio.h>

int some_func(int a) {
  return a + 10;
}
func.h
#ifndef GTEST_TRIAL_FUNC_H
#define GTEST_TRIAL_FUNC_H

int some_func(int a);

#endif //GTEST_TRIAL_FUNC_H

オブジェクト作成コンパイル

$ gcc -c func.c

テストケース実装。

test.cpp
#include "gtest/gtest.h"
extern "C" {
  #include "func.h"
}

class fixtureName : public ::testing::Test {
protected:
  virtual void SetUp(){
  }
  virtual void TearDown(){
  }
};

TEST_F(fixtureName, testOk)
{
    EXPECT_EQ(10, some_func(0));
    EXPECT_EQ(11, some_func(1));
}

コンパイル

$ g++ -pthread -isystem ../googletest/googletest/include test.cpp func.o libgtest_main.a  libgtest.a

テスト実行

$ ./a.out
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from fixtureName
[ RUN      ] fixtureName.testOk
[       OK ] fixtureName.testOk (0 ms)
[----------] 1 test from fixtureName (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 1 test.