入門ガイド

コンセプト

iutest の基本コンセプトは Google Test のそれと同じです。
ここでは、iutest 独自のコンセプトを上げます。

Google Test との違い

Google Test にあって iutest にない機能

iutest 拡張機能

こちらの機能は、iutest_switch.hpp を使用することで Google Test でも使用できるようになる機能です。

iutest 独自機能

こちらの機能は、iutest でのみ利用できる機能です。

iutest / Google Test 切り替え

iutest と Google Test の切り替えには gtest/iutest_switch.hpp を使用します。
//#include "iutest.hpp"
#include "gtest/iutest_switch.hpp" // iutest.hpp の代わりに iutest_switch.hpp を使用する

iutest モード

デフォルトでは iutest モードになっています。
iutest.hpp と違うのは Google Test の記法が使えるという点です。
既存の Google Test のテストコードも iutest_switch.hpp ヘッダーをインクルードすることで、
iutest の実装に切り替わります。

Google Test モード

Google Test モードに切り替えるには iutest_switch.hpp ヘッダーをインクルードする前に、
IUTEST_USE_GTEST マクロを定義してください。
これにより、iutest のテストコードで Google Test の実装を使用するようになります。

テストのフィルタリング

--iutest_filter コマンドラインオプションでフィルタを指定できます。 ここでは、フィルタのフォーマットについて説明をします。

フォーマット

フィルタのフォーマットは、':' で区切られたワイルドカードパターン(ポジティブパターン)になります。
また、先頭に '-' を付けることで、マッチしたテストを除外するネガティブパターンも指定できます。
(iutest のテスト名は、TestCaseName.TestName です)

*任意の文字列にマッチ
?任意の1文字にマッチ

./foo_test全てのテストを実行します
./foo_test --iutest_filter=*
./foo_test --iutest_filter=FooTest.*テストケース FooTest 内のテストを全て実行します
./foo_test --iutest_filter=*Null*:*Init*名前に "Null" または "Init" を含むテストを実行します
./foo_test --iutest_filter=-*Foo*名前に "Foo" を含むテスト 以外 を全て実行します
./foo_test --iutest_filter=FooTest.*-FooTest.Barテストケース FooTest 内のテストで FooTest.Bar を除く
全てのテストを実行します
./foo_test --iutest_filter=FooTest.*-FooTest.Bar:FooTest.Bazテストケース FooTest 内のテストで FooTest.Bar と
FooTest.Baz を除く全てのテストを実行します

ファイルから指定

iutest ではフィルターをファイルから読み込むことができます。
--iutest_filter=@filter.txt のように先頭に @ を付け、その後にファイル名を指定することで読み込みできます。
フォーマットはコマンドラインと同じです。(改行は ':' に置き換えられます)

Matcher

Matcher の概要

iutest では Matcher を提供しています。iutest の Matcher は Google Mock のそれとほぼ同じ使い方をします。
ただし、Google Mock との互換性対応はしていませんのでご注意ください。

アサーション

Matcher は IUTEST_*_THAT アサーションで利用します。

IUTEST_*_THAT(expression, m)expression の値が Mathcer m にマッチするか検証します

Matcher の種類

Matcher の種類については Doxygen 生成のドキュメントを確認してください。