目的
- Visual StudioでC++のGoogle Testを使ってみたのでその手順をまとめてみました。
前提
- 作業環境
- Windows 10
- Visual Studio 2017 Communityがインストール済みであること
- Visual Studio でVisual C++のプロジェクトが新規生成できること
1.Visual Studio でテスト対象のクラスライブラリを作る
1.1. Visual Studioを起動し、[ファイル]-[新規生成]-[プロジェクト]メニューを実行します。
1.2. 左のタブで[Visual C++]-[Windows デスクトップ]を選択し、[スタティックライブラリ]を選択します。名前をここでは「MyInt」にして、場所は任意です。名前と場所を指定したら[OK]を押してプロジェクトを新規生成します。
1.3. [プロジェクト]-[クラスの追加]メニューを実行します。
1.4. クラス名を[MyInt]にして[OK]してクラスを作成します。
1.5. MyIntクラスの定義
MyIntクラスについては@tjunさんのこちらの記事のサンプルコードをお借りさせていただきました。
1.5.1. MyInt.hの定義
class MyInt
{
public:
MyInt(int num);
bool isOdd();
bool isEven();
private:
int num_;
};
1.5.2. MyInt.cppの定義
// include部分は若干引用元と異なります。
#include "stdafx.h"
#include "MyInt.h"
MyInt::MyInt(int num)
:num_(num)
{}
bool MyInt::isOdd()
{
// 奇数かどうかを判定する
return (num_ % 2) != 0 ? true : false;
}
bool MyInt::isEven()
{
return isOdd(); // 例として、ここにバグがある
}
1.6. ソリューションをビルドしてこのプロジェクトを閉じます。
2.テストを実行するプロジェクトを作成する
2.1. Visual Studioを起動し、[ファイル]-[新規生成]-[プロジェクト]メニューを実行します。
2.2. 左側のタブで[Visual C++]-[テスト]を選択し、[Google Test]を選択します。名前を[MyIntGoogleTest]とし、場所を任意の場所にします。[OK]してプロジェクトを作成します。
2.3. 下記のような画面が表示されたら[Google Testの使用法:]を[スタティックライブラリ(.dll)]、[C++ランタイムライブラリ:]を[動的リンク(推奨)]にして[OK]します。
2.4. [ファイル]-[追加]-[既存のプロジェクト]メニューを実行し、1で作成したテスト対象のプロジェクトを追加します。
2.5. MyIntGoogleTestプロジェクトにMyIntの参照を追加します。ソリューションエクスプローラーで[MyIntGoogleTest]-[参照]を選択して[プロジェクト]-[参照の追加]メニューを実行します。
2.6 [参照の追加]画面で[MyInt]にチェックを入れて[OK]します。
2.7. [MyIntGoogleTest]プロジェクトのtest.cppに以下のテストコードを書きます。
#include "pch.h"
#include "gtest/gtest.h"
// ↓はMyInt.hをどこに作成したかで異なる。
#include "../../../MyInt/MyInt/MyInt.h"
namespace {
class MyIntTest : public ::testing::Test {};
![2019-05-12 (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228736/e78a7d06-b75c-b69b-c56d-51365467de73.png)
TEST_F(MyIntTest, isOdd)
{
MyInt mi1 = MyInt(10);
EXPECT_EQ(false, mi1.isOdd());
}
TEST_F(MyIntTest, isEven)
{
MyInt mi1 = MyInt(10);
EXPECT_EQ(true, mi1.isEven());
}
} // namespace
これで準備は完了です。
3. テストを実行する。
2で作成したプロジェクトで、[テスト]-[すべてのテストを実行]メニューを実行します。そうするとビルドが実行された後にテストコードが実行され、テストエクスプローラ上でテスト結果が表示されます。
テストエクスプローラー上では、
- 緑色:成功
- 赤色:失敗
になっています。
これでテストが出来ました!!