変更点は以下の通りです。
- 追加
- --verbose コマンドラインオプションを追加
- --iutest_default_package_name コマンドラインオプションを追加
- operatoer == のないオブジェクトの IUTEST_*_EQ 対応
- operatoer != のないオブジェクトの IUTEST_*_NE 対応
- junit xml 出力に対応(--iutest_output=junit)
- IUTEST_FLAG(ostream_formatter) を追加
- tuple 要素を取得する GetParam tempalate 関数を追加
- ARM対応
- 修正
- --iutest_break_on_failure でスキップや警告でも停止していた不具合を修正
- Visual Studio 14 CTP 3 対応
- バグ修正
今回は追加が多めです。
コマンドラインオプション
コマンドラインオプションが2つ追加されました。1つ目は --verbose オプションで、これを付けるとログ出力が増えます。
具体的には、テスト終了時に SKIP,DISABLED のテストリストが出力されるようになります。

2つ目は --iutest_default_package_name オプションで、これでルートパッケージ名を指定できるようになりました。
具体的には、Jenkins で集計した際に (root) と表示されていたところが変更されます。
指定なし:
--iutest_default_package_name=All:
また、これまで --iutest_output には xml しか指定できませんでしたが、junit が指定できるようになりました。
構造体の比較
struct TestObjectX
{
int a,b,c;
};
IUTEST(AssertionTest, MemCmpEQ)
{
TestObjectX x={0,1,2};
TestObjectX y={0,1,2};
IUTEST_ASSERT_EQ(x, y);
}
IUTEST(AssertionTest, MemCmpNE)
{
TestObjectX x={0,1,2};
TestObjectX y={0,1,3};
IUTEST_ASSERT_NE(x, y);
}
比較は memcmp で行います。それ以外の方法での比較が必要な場合は、適宜 operator を定義してください。
ostream formatter
これまでアサーションが出力する数値は10進数でした。ただ、16進数で表示したこともあるだろう、ということで IUTEST_FLAG(ostream_formatter) を追加しました。使い方は、標準ライブラリのストリームと同じように ioマニピュレーター を使った方法や、関数呼び出しでも変更できます。
::iutest::IUTEST_FLAG(ostream_formatter) << ::std::hex;
::iutest::IUTEST_FLAG(ostream_formatter) << ::std::setw(8) << ::std::setfill('0');
::iutest::IUTEST_FLAG(ostream_formatter) << ::std::setprecision(5);
template 版 GetParam
パラメーターに複数の要素を持たせたい場合、パラメーターの型を tuple にすることで実現できます。しかし、パラメーター取得関数の GetParam はパラメーターの型で返すため、各要素を取り出すには
std::get<1>(GetParam());
のようにする必要がありました。
v1.10.0 ではこの std::get と同じ働きをする template 版の GetParam 関数を用意しました。
以下のように使用します。
class TupleGetTest : public ::iutest::TestWithParam< ::iutest::tuples::tuple<bool, int> >
{
};
IUTEST_P(TupleGetTest, Test)
{
IUTEST_ASSERT_TRUE(GetParam<0>());
IUTEST_ASSERT_EQ(10, GetParam<1>());
}
IUTEST_INSTANTIATE_TEST_CASE_P(A, TupleGetTest
, ::iutest::Values( ::iutest::tuples::tuple<bool, int>(true, 10) ) );
修正
修正および追加点として Visual Studio 14 CTP 3 への対応とプロジェクトを追加しました。対応といっても大した修正はありません。
正式版は 2015年リリースらしいので楽しみです。
最後に
iutest のご意見ご要望があればこちらにお願いします。直接 twitter とかで言っていただいても OK です。