googletest を使ってみた
北海道の土産用お菓子は、どれもおいしくて最高です。
趣味でコードを書いてるけど、テストコードは全く書いてこず、仕事でテストコードを初めて書いて、良いテストコードを書くのは難しいなぁと実感し、ちょっとこれは練習しないとダメだなということで、テストコードを書く環境を作り始めました。
googletest
を見つけたので、これでいいかと選択。使う理由は、情報が多そうなのと使いやすそうな感じが理由。
Windows
版の Visual Studio 2017
上で動かしたので、そのまとめを書いておきます。
googletest を落とす
まずは、googletest を落としてこないと始まりません。
落としたら解凍します。
Google Test を追加
google-master/googletest/msvc/2010/
の中に、gtest.sln
というソリューションファイルがあるので、Visual Studio で開きます。
開くと、セキュリティ警告をしてくると思うので、内容を読んで、問題なければ OK を押します。そのあとプロジェクトの再ターゲットが出るので、設定に問題なければ OK を押します。
完了したら gtest.sln を閉じます。次にテスト対象のプロジェクトを用意します。今回は、TestProject
というプロジェクトを作成しました。次に、ソリューションに googletest
のプロジェクトを追加します。
ソリューションエクスプローラ
からソリューション
を右クリックし、追加 > 既存のプロジェクト
を選び、
先ほど解凍した googletest/msvc/2010/gtest.vcxproj
を追加します。追加すると以下のようになります。
環境設定
TestProject
には、何もコードが書かれていないので追加します。ここでは、main.cpp
を追加しました。追加したら、まずは googletest
を使えるようにしましょう。TestProject
のプロパティ
を開き、構成プロパティ > C/C++ > 全般
のなかの追加のインクルードディレクトリ
に新しいパスを追加します。
そこに googletest/include
を追加します。もちろん、googletest より前は、googletest を置いている場所のパスが入ります。追加したら OK をクリックし、設定を反映させます。次に、TestProject
の参照を追加します。参照
を右クリックすると参照の追加
が出るので、それをクリックし、gtest
にチェックを入れます。
最後に、gtest プロジェクトのプロパティを表示し、構成プロパティ > C/C++ > コード生成
からランタイムライブラリ
を環境に合わせて設定します。よく分からない場合は、テスト対象のプロジェクトと同じにすれば問題ないはずです。ここでは、構成
を Debug
に変更し、ランタイムライブラリ
をマルチスレッドデバッグDLL(/MDd)
にしました。OK をクリックして、プロパティを閉じます。
テストコードの作成
最後にテストコードを作成します。今回は、main.cpp
に直接テストコードを作成します。
#include "gtest\gtest.h" TEST() { EXPECT_EQ(0, 1 - 1); } int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
main
関数内の ::testing::InitGoogleTest(&argc, argv)
と RUN_ALL_TEST()
がテスト実行のために必要な処理です。TEST(){}
内の処理が実際にテストしたい内容になります。
これを実行すると以下のように表示されます。
以上で基本的な設定と使い方は、完了です。 詳しく知りたい方は、
入門ガイド — Google Test ドキュメント日本語訳
あたりを参照するといいでしょう。
おまけ
googletest は、include ディレクトリと msvc ディレクトリ、src ディレクトリが同じ階層にあれば問題なさそうなので、この三つをコピーして、ソリューションごとに置くと良さそうです。
おわり
以上が googletest の使い方でした。Visual Studio に googletest を入れていると Visual Studio さんに Test Adapter for Google Test をお勧めされたので、気が向いたら試してみようと思います。Community でも使えるんですかね……?