LoginSignup
11
11

More than 5 years have passed since last update.

「テスト駆動開発による組み込みプログラミング」の演習でIGNORE_TESTの罠

Last updated at Posted at 2013-06-06

先日から次の本の写経をやっているんだけど、P.70で行き詰まったので書いておく。

テスト駆動開発による組み込みプログラミング――C言語とオブジェクト指向で学ぶアジャイルな設計
http://www.oreilly.co.jp/books/9784873116143/

IGNORE_TEST

P.70ではIGNORE_TESTマクロを使う解説がある。ところが、実行結果が異なり、本来1 Ignoredとなるべき所が、0 Ignoredとなってしまう。さらに悪いことに、その後に書いたテストが失敗するように書いても全て成功してしまう問題が起こる。しょうがないのでデバッグするとどうやらUnityのフレームワーク側に問題がありそうだ。次のように修正すれば解説通りの動作となる事が分かった。

unity_fixture.c
void UnityIgnoreTest(const char * printableName)
{
    Unity.NumberOfTests++;
    Unity.CurrentTestIgnored = 1;
    if (UnityFixture.Verbose)
    {
        UnityPrint(printableName);
        UNITY_OUTPUT_CHAR('\n');
    }
    else
        UNITY_OUTPUT_CHAR('!');

    // これが要るんちゃう?!?!
    // ↓ ★これを追加
    UnityConcludeFixtureTest();

}

フレームワークの中身にも触れられて良かったとしよう。
# Unity自体がちゃんとテストされているか心配になった。

本家に出てたよ

よくよく調べると、原典のサイトに情報が出てた。
http://forums.pragprog.com/forums/123/topics/10126

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11