2013年12月30日月曜日

2013年振り返り

2013年ものこりわずかとなりました。
仕事でも私生活でもいろいろありましたが、何とか、年を越せそうです。
特に 2013年は忙しかった。そんな気がします。
それでも、ブログをほぼ週一で更新できたのでよかったです。

2013年のブログを振り返るとやはりテスティングフレームワークの話題が大半を占めていました。
あとは C++ の話や Jenkins って感じでしょうか。
あぁ、あと Arudino を始めましたね。


ブログ始めて3年経ちましが、おかげさまでアクセスが順調に増えていっています。
乱雑な文章ではありますが、皆様に見て頂けて大変嬉しいです。
iutest のレビューもしてもらえたらもっと嬉しいです。)

それでは、また来年!


2013年12月27日金曜日

Travis CI 始めました

自作のプログラムのテストのために Travis CI を始めました。

これまでプログラムの検証には Jenkins を使っていたのですが、
ノートPC のローカルサーバーで動かしているのでノートPC を起動する必要がありました。
(あと clang のバージョンも古い)
Cloudbees Jenkins も使用していますが、こちらは clang でビルドができなかった。(標準ライブラリでエラーが出てしまう。やり方はあると思うが…)
というわけで、手軽に clang を使える環境として導入することにしました。

これから、ちょっとづつ使い方を覚えていこうと思います。

2013年12月25日水曜日

[C++03][iutest] 日本語テスト名機能の紹介

2013/12/16 に京都で行われた 「江添とボレロ村上の京都C++勉強会」 に参加しました。
やはり、人に解説してもらうと頭に入りやすくていいですね^^
参加者のレベルも高くてすごいなと感じました。

さて、
質疑応答の中で日本語識別子の話が出て、テスト名に使えるねって声がありました。

それ C++03 でもできるよ!
(※ それ = テスト名に日本語を使う)

iutest は私が個人的に作っている Google Test ライクなテスティングフレームワークです。
特徴としては、ヘッダーオンリー・Google Test の拡張機能・C++11 対応などがあります。

その中の機能の一つとして日本語テスト名に対応しています。
(v1.5.0 から対応。執筆時点での最新バージョンは v1.7.0
v1.5.0 をリリースしたときの変更履歴に書いただけで、詳しく書いてなかったので今回紹介することにしました。

はじめに
この機能を紹介するまえに。

C++11 からは識別子に日本語が使えるようになりました。
このため、C++11 以降の環境では今回紹介する機能を使わずとも日本語テスト名が書けます。
なので、日本語テスト名が使いたければ素直に C++11 対応のコンパイラーを使いましょう。


サンプルコード
それでは、サンプルコードを見てみましょう。
#include "iutest.hpp"

IUTEST(JapaneseTest, IUTEST_JAPANESE_NAME(かきくけこ))
{
    IUTEST_ASSERT_STREQ("かきくけこ"
        , ::iutest::UnitTest::GetInstance()->current_test_info()->name());
}

class FixedTest : public ::iutest::Test {};

IUTEST_F(IUTEST_JAPANESE_NAME_F(FixedTest, あいうえお)
    , IUTEST_JAPANESE_NAME(かきくけこ))
{
    IUTEST_ASSERT_STREQ("あいうえお"
        , ::iutest::UnitTest::GetInstance()->current_test_info()->test_case_name());
    IUTEST_ASSERT_STREQ("かきくけこ"
        , ::iutest::UnitTest::GetInstance()->current_test_info()->name());
}

int main(int argc, char* argv[])
{
    IUTEST_INIT(&argc, argv);
    return IUTEST_RUN_ALL_TESTS();
}

日本語テスト名を使う場合は、通常テスト名を書くところで IUTEST_JAPANESE_NAME を使うだけです。
簡単ですよね?
テストフィクスチャーを使う場合は、IUTEST_JAPANESE_NAME_F を使って、第一引数にフィクスチャークラス名を指定します。

実行画面


いかがでしょうか?
ちょっとでも iutest を使ってみたくなりましたでしょうか?
iutest はヘッダーオンリーなのでソースコードをダウンロードするだけで、すぐに使えます!

是非是非、使ってみてください。
SourceForge: http://osdn.jp/projects/iutest/
github: https://github.com/srz-zumix/iutest