2017-01-05 81 views
3

Jenkins CIスレーブのiOSアプリケーションでUIテストを実行すると、UIが正しくなくなり、テストが失敗します。ローカルでは、同じUIが期待通りであり、テストに合格します。uiテスト時にアプリケーションのログを表示する方法

私はこれを理解することができず、リモートマシン上のようにデバッグできません。だから、私は、UIがリモートJenkinsのスレーブで間違って表示されている理由を知るために、アプリが何をしているのかを知るためのログを追加したいと思っています。

テストログの出力には、アプリからのログ出力(NSLog経由)が含まれておらず、NSLogの派生データ出力フォルダ内の.xcactivitylogファイル内のアプリケーションからの文字列も見つかりません。

UIテストによって実行されているとき、私のアプリからのログ出力はどこにありますか?これは、Xcode 8.2でiOS 9.3のシミュレートされたデバイスを実行している場合に発生します。

+1

のようなログにアクセスすることができます試してみましたこの? http://stackoverflow.com/questions/10165641/how-can-i-get-the-console-logs-from-the-ios-simulator –

+0

シミュレータのUUIDを取得することで、私が探しているものが正確に表示されます。ありがとうございました! –

+0

これは正確なリンクです:http://stackoverflow.com/a/10165649/71877 –

答えて

-1

私はBugfenderという製品の共同創設者です。私たちは、ログをコンソールに出力し、サーバーにアップロードするBFLog機能を提供しています。デバイスをコンピュータに接続する必要はなく、ログを常に確認してください。また、すべてのユーザーインターフェイスのやり取りを自動的に収集するので、問題を最も簡単に見つけることができます。

私たちのツールの主な用途の1つは、何もせずにすべてのテストセッションのログを取得するため、後でテストが失敗したときに何が間違っているかを後で確認できるためです。

+0

ありがとう、しかし' fastlane'は私のニーズを世話する。 –

2

次の解決法は少しハッキリですが、デバイスで実行中でもログを取得できます。

Logger.h

#define Debug(...) _Debug(__VA_ARGS__) 

void _Debug(NSString *format, ...); 

Logger.m

void _Debug(NSString *format, ...) 
{  
    format = [NSString stringWithFormat:@"[Debug]: %@", format]; 
    va_list args; 
    va_start(args, format); 
    NSLogv(format, args); // logs to the console 

    NSString *logMessage = [[NSString alloc] initWithFormat:format arguments:arguments]; 
    UIApplication *application = [UIApplication sharedApplication]; 
    UIWindow *window = [application keyWindow]; 
    window.accessibilityValue = [NSString stringWithFormat:@"%@\n%@", window.accessibilityValue, logMessage]; 

    va_end(args); 
} 

次にUIテストから、私はこの

+ (NSString *)logs 
{ 
    XCUIElementQuery *windowQuery = [[[XCUIApplication alloc] init] windows]; 
    return [windowQuery elementAtIndex:0].value; 
} 
+0

それは、UITestに価値を戻す方法の1つです。 – River2202

関連する問題