SourceForge もしくは github からソースコードの取得もできます。
v1.0 からの変更点
- 追加機能
- 例外の値を検査するアサーション
- Pairwise
- IUTEST_SKIP
- Logger
- ファイルパス操作補助クラス
- 修正
- 初期化関数が呼ばれていない場合に警告表示
- CRT セキュリティ強化関数の失敗時ハンドラに対応
- RTTI がない場合の型表示
- IUTEST_*_NO_FATAL_FAILURE に空の statement を与えた場合の警告抑制
- その他バグを修正
追加機能だけここで説明したいと思います。
例外の値を検査するアサーション
Google Test では、*_THROW | 期待する例外が throw されることをテスト |
*_ANY_THROW | なんらかの例外が throw されることをテスト |
*_NO_THROW | 例外が throw されないことをテスト |
今回、これに加えて throw された値の比較テストをできるようにしました。
static void ExceptionFunction(int i) { switch( i ) { case 1: throw 2; break; case 2: throw "error"; case 3: throw ::std::string("error"); default: break; } } IUTEST(AssertionTest, Exception) { IUTEST_EXPECT_THROW_VALUE_EQ(ExceptionFunction(1), int, 2); IUTEST_EXPECT_THROW_VALUE_NE(ExceptionFunction(1), int, 0); IUTEST_ASSERT_THROW_VALUE_STREQ(ExceptionFunction(2), const char *, "error"); IUTEST_ASSERT_THROW_VALUE_STREQ(ExceptionFunction(3), ::std::string, "error"); IUTEST_ASSERT_THROW_VALUE_STRCASEEQ(ExceptionFunction(2), const char *, "Error"); }
対応しているのは、EQ/NE/STREQ/STRCASEEQ です。
本来ならばユーザーが例外をキャッチして値を検査するところを、簡単に記述できるようになりました。
こちらは gtest 実装を利用するモードでも使用できます。
Pairwise
複数のパラメータの組み合わせを生成する Combine に加えて、オールペア法による組み合わせを生成する Pairwise を追加しました。
Pairwise を使用することで Combine よりも格段に少ないテスト回数で済むようになります。
オールペア法についての詳しい説明はここでは省きます。
(※ Pairwise は gtest 利用モードでは使用できません。)
IUTEST_SKIP
これまでは実行されるべきテストが実行されなかった場合に、テスト結果を「成功」ではなく「スキップ」として出力するようにしていました。
(gtest はスキップ非対応。そのへんはGoogle Test を使ってみる - その6(Jenkins との連携、スキップ対応)で説明してます。)
今回、新たにユーザーがスキップできるように IUTEST_SKIP を追加しました。
実行環境に依存しているテストの実行/不実行の選択に使用することを想定しています。
すでにテストが失敗している場合はスキップになりません。
IUTEST(Foo, Bar) { IUTEST_SKIP(); // この時点でテストをスキップして終了 IUTEST_ASSERT_EQ(2, 3); // ここは実行されない } IUTEST(Foo, Baz) { IUTEST_EXPECT_EQ(2, 3); IUTEST_SKIP(); // すでにテストが失敗しているのでスキップにはせず、終了 IUTEST_EXPECT_EQ(2, 3); // ここは実行されない }
Logger
ログ出力のカスタマイズポイントとして用意しました。Visual Studio Unit Test Framework 対応のために追加しましたが、他のケースでも利用できると思います。
ファイルパス操作補助クラス
カレントディレクトリの取得などをするクラスを追加しました。gtest には同様なクラス(::testing::internal::FilePath)があります。
0 件のコメント:
コメントを投稿