今回の変更点は以下のとおりです。
- iuCombine を追加
- IUTEST_*_FATAL_FAILURE, IUTEST_*_NON_FATAL_FAILURE を追加
- IUTEST_*_NO_FATAL_FAILURE, IUTEST_*_NO_FAILURE を追加
- 明示的な成功と失敗を追加
- 値のパラメータテストの明示的登録に対応
iuCombine を追加
今回の変更での目玉です。v1.2.0 で値のパラメータテストに対応しましたが、Values と Range しか使えませんでした。
今回 v1.3.0 で iuCombine を追加し、パラメータの組み合わせテストを書けるようになりました。
iuCombine の使い方は iutest や gtest のそれとは少し違うので簡単にですが説明しておきます。
typedef IUTEST_P_TYPE((int, char, unsigned int)) TestCombineParamType; IUTEST_INSTANTIATE_TEST_CASE_P((int, char, unsigned int), A , TestCombine, iuCombine , (iuRange, ( 0, 2)), (iuStepRange, (100, 110, 2)), (iuValues, (0, 4, 2)) ); IUTEST_P(TestCombineParamType, TestCombine, Test) { const int x0 = param.value0; const char x1 = param.value1; const unsigned int x2 = param.value2; iuConsole_Output("%d %d %d\n", x0, x1, x2); }
第一引数に、型のリストを()で括った形(以下、タプルと呼びます)で渡します。
これは、IUTEST_P のテスト関数に渡されるパラメータ変数の型として使います。
次にテスト関数を作成します。
こちらは通常の値のパラメータテストと同じように IUTEST_P で定義します。
第一引数に先ほど定義した型を指定、
第二引数がテストケース名、第三引数がテスト名です。
次に組み合わせを作成します。
IUTEST_INSTANTIATE_TEST_CASE_P を使うのは通常の値のパラメータテストと同じです。
第一引数には、IUTEST_P_TYPE で渡したものと同じ型のリストをタプルで渡します。
(※ 2回も書く必要があって面倒ですが…)
第二引数には、このパラメータのインスタンスのプレフィックス名を渡します。
これは重複しない名前ならなんでも構いません。
第三引数にはテストケース名、第四引数に iuCombine を指定します。
ここからが iuCombine の特殊な書き方になります。
第五引数以降には、iuCombine のパラメータを渡します。
個々のフォーマットは、
( ジェネレータ名, (ジェネレータのパラメータ) )のようになります。
ジェネレータとジェネレータのパラメータを () で一纏めにして渡しています。
また、ジェネレータのパラメータもタプル形式でまとめています。
ジェネレータには iuValues や iuRange などが使用できます。
最後にパラメータの取り出し方ですが、
IUTEST_P のテスト関数に param 変数名でパラメータを保持した構造体が渡されます。
各パラメータは param.value0,param.value1... のように格納されているので、
そこから参照することができます。
実行するとこんな感じになります。
IUTEST_*_FATAL_FAILURE, IUTEST_*_NON_FATAL_FAILURE を追加
gtest における spi にあたる機能に対応しました。若干ログメッセージがあれですが、とりあえずテストが失敗することを検証できるようになりました。
IUTEST_*_NO_FATAL_FAILURE, IUTEST_*_NO_FAILURE を追加
今度は逆に、テストが失敗していないことを検証するマクロです。サブルーチンで発生したテスト失敗を検知するために使ったりします。
明示的な成功と失敗を追加
表題通り、明示的な成功と失敗に対応しました。値のパラメータテストの明示的登録に対応
v1.2.0 のバグ修正です。テスト関数の自動登録が使えない環境では、テストを明示的に登録する必要がありますが、
値のパラメータテストの関数が登録できないバグを修正しています。
0 件のコメント:
コメントを投稿