c++の単体テストフレームワークにgoogletestというのがあります。
Debian stretchで使ってみたいと思います。
まずはインストール
aptでインストールすると
$ sudo apt install googletest
|
としてパッケージをインストール。
でインストールしたパッケージのファイルをリストするとソースコードが/usr/src/googletest配下にインストールされたので、移動します。
$ cd /usr/src/googletest/
|
直下にCMakeLists.txtがあるので、cmakeをインストールして、ビルドとインストールをします。
$ sudo apt install cmake
$ sudo cmake .
$ sudo make
$ sudo make install
|
これで、googletestを使う準備ができました。
では、テストをしてみます。ディレクトリの構成はこんな感じです。
.
├── src
│ └── example.cpp
└── test
└── example_test.cpp
|
テスト対象のファイルは引数をインクリメントして返す関数を一つだけ書きます。
src/example.cpp1 2 3 4 | int increment( int x)
{
return ++x;
}
|
関数increment()のテストを書きます。
test/example_test.cpp1 2 3 4 5 6 7 8 | #include <gtest/gtest.h>
#include "src/example.cpp"
TEST(example_test, func_increment)
{
ASSERT_EQ(1, increment(0));
}
|
コンパイル&リンクします。リンクするライブラリはgtest, gtest_main pthreadです。
テスト内にmain()がないためgtest_mainをリンクし、google testがpthreadを使うためpthreadをリンクします。
g++ test /example_test .cpp -I. -lgtest -lgtest_main -lpthread -o example_test
|
テストを走らせてみます。
$ . /example_test
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case .
[----------] Global test environment set -up.
[----------] 1 test from example_test
[ RUN ] example_test.func_increment
[ OK ] example_test.func_increment (0 ms)
[----------] 1 test from example_test (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 1 test .
|
となり、無事テストが通りました。