Catch2で気軽にテストかける環境@Visual Studio 2019

忘れないうちに殴り書きしておこうと思います。

C++ のユニットテスト用フレームワークは Google Test とか iutest とか Catch2 とか色々ありますが今回は Catch2 を使ってみることにしました。ヘッダオンリーでお手軽みたいです。

テスト用プロジェクトの作成~実行

まず公式からヘッダファイルをダウンロードしておきます。

次にテスト用のプロジェクトを作ります。「Windows コンソールアプリ」でいいでしょう。作ったら、テストしたいライブラリを使う準備をします(インクルード ディレクトリとかライブラリ ディレクトリの設定をする)。

プロジェクトの設定が終わったら、テストを書いていきます。

Test_mystring.cpp

#define CATCH_CONFIG_MAIN  //main()はCatch2が作ってくれる
#include <Catch2/catch.hpp>  //環境に合わせて

#include <mystring.hpp>

TEST_CASE("upper()", "[mystring]")
{
    REQUIRE(mystring::upper("abc") == "ABC");
}

でビルドして実行すると、テストの結果が出てくると思います。

テストエクスプローラを使いたい

一応テストができるようになりましたが、いちいちテスト用プロジェクトのビルドして実行して・・・とやるのは面倒なので、Visual Studio のテストエクスプローラ ウィンドウを使ってテスト開始~結果の確認までやりたいです。そこでまず Test Adapter for Catch2 拡張機能をインストールします。

次に .runsettings ファイルを以下の通り作って、ソリューションのルートに置いておきます。テストを書いてあるソースのファイル名が FilenameFilter にマッチするように名前を付けておきます。

.runsettings

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
    <Catch2Adapter>
        <FilenameFilter>^Test_</FilenameFilter>
    </Catch2Adapter>
</RunSettings>

そしてテストエクスプローラの「設定」→「実行設定の構成」→「runsettings ファイルの選択」からこのファイルを選択します(自動検出でもいい)。

で、ソリューションをリビルドするとテストが検出されて、テストエクスプローラ上に出てくると思います。これで、このウィンドウの「実行」ボタンをワンタッチでテストのビルド~実行~結果の確認までできるようになりました。

こんなかんじ

以上です

なんか抜けてるかもしれない。