7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Visual StudioでC++のGoogle Testを使ってみた

Posted at

目的

  • Visual StudioでC++のGoogle Testを使ってみたのでその手順をまとめてみました。

前提

  • 作業環境
    • Windows 10
    • Visual Studio 2017 Communityがインストール済みであること
    • Visual Studio でVisual C++のプロジェクトが新規生成できること

1.Visual Studio でテスト対象のクラスライブラリを作る

1.1. Visual Studioを起動し、[ファイル]-[新規生成]-[プロジェクト]メニューを実行します。
2019-05-12.png

1.2. 左のタブで[Visual C++]-[Windows デスクトップ]を選択し、[スタティックライブラリ]を選択します。名前をここでは「MyInt」にして、場所は任意です。名前と場所を指定したら[OK]を押してプロジェクトを新規生成します。
2019-05-12 (1).png

1.3. [プロジェクト]-[クラスの追加]メニューを実行します。
2019-05-12 (2).png

1.4. クラス名を[MyInt]にして[OK]してクラスを作成します。
2019-05-12 (3).png

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]してプロジェクトを作成します。
2019-05-12 (4).png
2.3. 下記のような画面が表示されたら[Google Testの使用法:]を[スタティックライブラリ(.dll)]、[C++ランタイムライブラリ:]を[動的リンク(推奨)]にして[OK]します。
2019-05-12 (5).png
2.4. [ファイル]-[追加]-[既存のプロジェクト]メニューを実行し、1で作成したテスト対象のプロジェクトを追加します。
2019-05-12 (6).png
2019-05-12 (7).png
2.5. MyIntGoogleTestプロジェクトにMyIntの参照を追加します。ソリューションエクスプローラーで[MyIntGoogleTest]-[参照]を選択して[プロジェクト]-[参照の追加]メニューを実行します。
2019-05-12 (8).png
2.6 [参照の追加]画面で[MyInt]にチェックを入れて[OK]します。
2019-05-12 (9).png
2.7. [MyIntGoogleTest]プロジェクトのtest.cppに以下のテストコードを書きます。

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で作成したプロジェクトで、[テスト]-[すべてのテストを実行]メニューを実行します。そうするとビルドが実行された後にテストコードが実行され、テストエクスプローラ上でテスト結果が表示されます。
2019-05-12 (10).png
テストエクスプローラー上では、

  • 緑色:成功
  • 赤色:失敗
    になっています。
    これでテストが出来ました!!

課題/疑問点

  • デバッグ実行すると「gtest.ccが見つかりません」言われる。

    • 正直これが一体何者なのかググってみましたが、まだよくわかっていません。

    2019-05-12 (11).png

7
10
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?