自作テスティングフレームワークのテストを Travis CI でやっていますが、Google Test を使った場合のテストもするようにしました。
対応したときに参考にしたところ:
参考サイトに書かれていることそのまんまです。
なんの新規性もありません(汗)
.travis.yml はこんな感じ → https://github.com/srz-zumix/iutest/blob/master/.travis.yml
Makefile が汚いので誰か直してくれないかなぁー
兎にも角にも、これで gtest 互換のテストも自動化できました。
せっかくなので、「Travis CI で iutest を使う」というエントリーでも書こうかな。
2014年11月14日金曜日
2014年11月4日火曜日
[Visual Studio] GUID 挿入コマンド
仕事で GUID を挿入することが頻繁にあるのですが、いちいちツールメニューの GUID 作成ダイアログを開いてコピーするってのが面倒なので、ショートカットキーで挿入する拡張機能を探してみました。
https://visualstudiogallery.msdn.microsoft.com/270f94f9-4631-4d95-8407-7954acd11bd7?SRC=VSIDE
インストールができたら、あとは「Ctrl+K, Ctrl+J」とコマンドを入力すれば、GUID が挿入されます。
ツールメニューに「GuidInserter2Settings」が追加されていますので、そちらからフォーマットを選択できます。

https://visualstudiogallery.msdn.microsoft.com/22795583-5cc9-4681-af8e-6084f3441655?SRC=VSIDE
こちらは、「Alt+I, G」で GUID を挿入します。
フォーマットは、00000000-0000-0000-0000-000000000000 だけのようです。
GuidInserter2 を使うことにしました。
GuidInserter2
拡張機能を「GUID」で検索して最初に出たのが GuidInserter2。https://visualstudiogallery.msdn.microsoft.com/270f94f9-4631-4d95-8407-7954acd11bd7?SRC=VSIDE
インストールができたら、あとは「Ctrl+K, Ctrl+J」とコマンドを入力すれば、GUID が挿入されます。
ツールメニューに「GuidInserter2Settings」が追加されていますので、そちらからフォーマットを選択できます。

Insert Identifiers
少し下に出てきたのが Insert Identifiers。https://visualstudiogallery.msdn.microsoft.com/22795583-5cc9-4681-af8e-6084f3441655?SRC=VSIDE
こちらは、「Alt+I, G」で GUID を挿入します。
フォーマットは、00000000-0000-0000-0000-000000000000 だけのようです。
最後に
個人的に、Insert Identifiers は「Alt+I, G」が押しにくいのと、フォーマットが選べないので却下。GuidInserter2 を使うことにしました。
2014年10月21日火曜日
[gtest] 複数要素を持つパラメータでテストを書く
Google Test で値をパラメータとして扱う際に、パラメータに複数の要素を含めたい場合の書き方を説明します。
ただ、これだと構造体の定義やパラメータの生成がやや面倒です。
構造体の分だけ、すこ~しだけ簡単になった?気がします。
パラメータの構築は最初の例のように vector を返す関数で作ってもいいです。お好みでどうぞ。
自作テスティングフレームワークである iutest では以下のようなに ::std::get を省略した書き方もできます。
[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ
構造体をパラメータ化
ぱっと思いつく簡単な方法として構造体を使う方法があります。struct Param
{
int x;
float y;
};
::std::vector<Param> make_param()
{
::std::vector<Param> v;
for( int i=0; i < 5; ++i ) v.push_back(Param{ i, i*0.5f });
return v;
}
class Test : public testing::TestWithParam<Param> {};
INSTANTIATE_TEST_CASE_P(A, Test, testing::ValuesIn(make_param()));
TEST_P(Test, A)
{
Param p = GetParam();
::std::cout << p.x << ", " << p.y << ::std::endl;
}
ただ、これだと構造体の定義やパラメータの生成がやや面倒です。
tuple パラメータ
tuple をパラメータの型として扱う方法です。class Test : public testing::TestWithParam< ::std::tuple<int, float> > {};
INSTANTIATE_TEST_CASE_P(A, Test, testing::Values(
::std::make_tuple(0, 0*0.5f)
, ::std::make_tuple(1, 1 * 0.5f)
, ::std::make_tuple(2, 2 * 0.5f)
, ::std::make_tuple(3, 3 * 0.5f)
, ::std::make_tuple(4, 4 * 0.5f)
));
TEST_P(Test, A)
{
::std::tuple<int, float> p = GetParam();
::std::cout << ::std::get<0>(p) << ", " << ::std::get<1>(p) << ::std::endl;
}
構造体の分だけ、すこ~しだけ簡単になった?気がします。
パラメータの構築は最初の例のように vector を返す関数で作ってもいいです。お好みでどうぞ。
iutest の場合
恒例の宣伝。自作テスティングフレームワークである iutest では以下のようなに ::std::get を省略した書き方もできます。
class Test : public ::iutest::TestWithParam< ::std::tuple<int, float> > {};
IUTEST_INSTANTIATE_TEST_CASE_P(A, Test, ::iutest::Values(
::std::make_tuple(0, 0*0.5f)
, ::std::make_tuple(1, 1 * 0.5f)
, ::std::make_tuple(2, 2 * 0.5f)
, ::std::make_tuple(3, 3 * 0.5f)
, ::std::make_tuple(4, 4 * 0.5f)
));
IUTEST_P(Test, A)
{
::std::cout << GetParam<0>() << ", " << GetParam<1>() << ::std::endl;
}
登録:
投稿 (Atom)