忘れないうちに殴り書きしておこうと思います。
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 ファイルの選択」からこのファイルを選択します(自動検出でもいい)。
で、ソリューションをリビルドするとテストが検出されて、テストエクスプローラ上に出てくると思います。これで、このウィンドウの「実行」ボタンをワンタッチでテストのビルド~実行~結果の確認までできるようになりました。
以上です
なんか抜けてるかもしれない。