Gaming Life

一日24時間、ゲームは10時間

Visual Studio 2019でCatchを使ったC++単体テストを実現する

Cppmap で紹介されていたC++単体テストフレームワークであるCatchをVisual Studio 2019で使ってみたので、その導入に関するメモ。

github.com

はじめに

説明のために、Visual Studio 2019 (以下VS2019) で、空のプロジェクトを作成。整数を受け取り2倍の値を返す関数 int mul2(int) を作る。

f:id:ai_gaminglife:20200329110451j:plain

次に単体テストを実行するためのプロジェクトを追加で作成する。今回は、テスト用のプロジェクトの名前を TestProjectとした。

f:id:ai_gaminglife:20200329110504j:plain

Catchの導入

TestProject以下に空のヘッダファイル catch.hpp を作成する。

続いて、Catchの公式リポジトリ から、 single_include/catch2/catch.hpp を見つけ、その中身を全コピーする。catch.hppは include ディレクトリ以下にも存在するが、こちらではない。私はこれに気づかず時間を潰してしまった。

次にTestProject以下に Test.cpp を作成し、以下を記述する。

    #define CATCH_CONFIG_MAIN
    #include "catch.hpp"

これでCatchの導入完了。

単体テストの実行

TestProject以下に、最初に作成した mul2() 関数をテストするための testMul2.cpp を作成する。

そこで catch.hpp と、 mul2() を実装したヘッダファイルをincludeする。

    #include "catch.hpp"
    #include "../HelloCatch2/mul2.hpp"

あとは、適当にテストケースを書いて、TestProjectをスタートアッププロジェクトに指定してから実行すればOK。

f:id:ai_gaminglife:20200329110544j:plain

もし、他に作成した関数について単体テストしたければ、TestProject以下にcppファイルを作成し、そこで #include "catch.hpp すればよい。

毎回HelloCatch2プロジェクトで作成したヘッダファイルを参照パスで指定してincludeするのは面倒なので、TestProjectのアイコンを右クリックして VC++ディレクトリ->インクルードディレクトリ から、HelloCatch2プロジェクトで作成するヘッダファイルを置くディレクトリを、インクルードパスに指定すると良い。

参考サイト

github.com