まとーか鈴木

千の姿と千の技と千の風

標準出力に色付けしてテストの情報を見やすくする

xcodebuildを使ってテストするときに、表示を区別できないかと考えてみた。

特に、課金でiTunesStoreに接続する場合のように、 シミュレータではテスト出来ないケースを判別したかった。

普通に標準出力で適当なメッセージとしてログを出すのでも良いけど、沢山出力されると見つけづらい。

色付けしてみた。

ログの表示方法はどれでも良い。

- (void)testExample
{
#if !TARGET_IPHONE_SIMULATOR
    NSLog(@"\x1b[31mシミュレータでは実行しません\x1b[m\n");

    XCTFail(@"\x1b[31mシミュレータでは実行しません\x1b[m\n");

    XCTestLog *testlog = [[XCTestLog alloc] init];
    [testlog testLogWithFormat:@"\x1b[31mシミュレータでは実行しません\x1b[m\n"];
#else
    // Some test code
#endif
}

結果

赤く表示されてます。

f:id:matouka_suzuki:20140328180317p:plain

やり方

標準出力への色付けはどうやるか知らなかったのだけれど、Wikipediaにまとめてあった。

ANSI escape code

文字色以外にも変更出来そう。

もっといい案ありそう…

Xcodeで実行した時は色付かないし、もっといい案がありそう。 なんか良い案ある人教えてェ