概要
WSL 上で GoogleTest を用いて、サンプルプログラムをテストする際の手順を記載する
ファイルの操作、コマンドの実行には VSCode を用いる
前提
- VSCode がインストールされていること
- WSL がインストールされていること
- WSL 上に gtest がインストールされていること
WSL に gtest をインストールする手順は下記
gtest 実施手順
VSCode で WSL に接続する
サンプルコードの作成
VSCode の左上のアイコンをクリックして、"フォルダーを開く" をクリック
VSCode のエクスプローラー上で右クリックして、"新しいファイル..." を選択
以下の3ファイルを作成する
sample.c
#include "sample.h"
int add( int a, int b ) {
return a + b;
}
sample.h
#ifndef SAMPLE_H_
#define SAMPLE_H_
int add( int a, int b );
#endif /* SAMPLE_H_ */
gtest_sample.cpp
#include <gtest/gtest.h>
#include "sample.h"
TEST( test_add, case_1_plus_2 ){
EXPECT_EQ( 3, add( 1, 2 ) );
}
gtest のビルドと実行
cd コマンドで、先ほどファイルを作成したディレクトリに移動する
以下のコマンドを実行し、ビルドを行う
g++ sample.c gtest_sample.cpp -o test -g -pthread -lgtest_main -lgtest
以下のコマンドを実行し、test を起動する
./test
サンプルコードの解説
sample.c について
(言うまでもないことだが、)add() は 引数 a, b を加算して返却する関数である。
gtest_sample.cpp について
TEST() マクロを用いてテストケースを作成している。
TEST() マクロを使用するためには、gtest/gtest.h をインクルードする必要がある。
TEST() マクロの第一引数は テストスイート名、第二引数はテストケース名として扱われる。
また、EXPECT_**() マクロはアサーションである。
今回使用している EXPECT_EQ() マクロは2つの引数が等しいか比較するアサーションであり、全てのアサーションが真である場合は、そのテストケースが成功しているとログに表示される。
いずれかのアサーションが偽の場合は、そのテストケースが失敗しているとログに表示される。