在我的Jenkins CI奴隶上的iOS应用程序上运行UI测试时,UI不正确,我的测试失败。在本地,相同的UI是预期的,测试通过。
我还没有能够解决这个问题,我无法在远程计算机上调试它。因此,我想添加日志记录,以查看应用程序正在做出哪些决定,以找出UI在远程Jenkins从站中显示不正确的原因。
测试日志输出不包含来自应用程序的日志输出(通过NSLog
),也无法在派生数据中的任何.xcactivitylog文件中找到来自app NSLog
调用的任何字符串输出文件夹。
在UI测试运行时,我在哪里可以找到我的应用程序的日志输出?这是使用Xcode 8.2运行iOS 9.3模拟设备。
答案 0 :(得分:3)
以下解决方案有点hacky,但即使在设备上运行,您也可以获取日志。
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;
}