2014年5月19日月曜日

iutest v1.9.0 をリリースしました

iutest v1.9.0 をリリースしました。

変更点は以下のとおりです。

  • 追加
    • IUTEST_*_THAT 追加
    • 式アサーション追加(IUTEST_ASSERT, IUTEST_EXPECT, IUTEST_INFORM, IUTEST_ASSUME)
    • 式アサーション追加(IUTEST_*_NOT)
    • IUTEST_USE_MAIN 追加(main 関数定義 config)
  • 変更
    • IUTEST_ASSERT を IUTEST_ASSERT_EXIT に変更

今回の目玉は式アサーションと THAT の追加です。
以下より、追加された機能の紹介をしていきます

IUTEST_*_THAT 追加
テスティングフレームワークでは多くみられる that アサーションに対応しました。
といっても、まだとりあえず対応した程度のものです。

現在使用できる matcher は、以下の6つです。
StartsWith前方一致
Contains部分一致
EndsWith後方一致
Equals完全一致
AllOfすべての matcher が真
AnyOf1つ以上の matcher が真
以前、紹介した Catch 相当の matcher は揃えましたが、Google Mock の matcher にはまだまだな状態です。
今後のバージョンアップで、matcher に matcher を適用できるようにするなど、より便利にしていく予定です。

式アサーション追加
もう1つアサーションを追加しました。
これまでのアサーションは、== なら EQ, <= なら LE など比較の仕方によってそれに対応するアサーションを使う必要がありました。

IUTEST_ASSERT_EQ(0, x);
IUTEST_ASSERT_LE(x, 1);

今回追加した式アサーションでは、式に対してアサーションとして機能するため、== や <= などの比較演算子の違いを意識せず、同じアサーションを使用できます。

int f() { return 42; }
IUTEST(Expression,Test)
{
    IUTEST_EXPECT(f() == 0);
    IUTEST_EXPECT(f() <= 1);
}
もちろん、失敗時の出力には f() の値が出力されます。

※C++03 の場合、算術演算子の展開に若干の制限があります。
詳細はコードを確認してみてください。(この辺なんとかしたいですが…)

|| や && を使用する場合は展開されませんので、IUTEST_EXPRESSION か IUTEST_OPERAND を使用してください。
IUTEST_EXPECT(f() == 0 IUTEST_OPERAND(||) f() == 1);
IUTEST_EXPECT(f() >= 0 && IUTEST_EXPRESSION(f() <= 1));

(展開前の式に内部実装が出力されてしまうのもなんとかしたい…)

IUTEST_USE_MAIN 追加
IUTEST_USE_MAIN マクロを定義することで、main 関数の記述を省略できます。 使用する場合は、プロジェクト1つに対して、1つのソースコードでこのマクロを定義してください。

今後の予定
matcher の強化や細かな部分の改善を予定しています。
C言語版の iutest_c の v1.4.0 を近日リリース予定です。

0 件のコメント:

コメントを投稿