ui测试时如何查看应用程序日志
Posted
技术标签:
【中文标题】ui测试时如何查看应用程序日志【英文标题】:How to view app logging when ui testing 【发布时间】:2017-05-20 03:36:58 【问题描述】:在我的 Jenkins CI 从属设备上运行我的 ios 应用程序的 UI 测试时,UI 不正确并且我的测试失败。在本地,与预期相同的 UI 并通过了测试。
我无法弄清楚这一点,也无法调试它,因为它在远程机器上。因此,我想添加日志记录以查看应用程序正在做出哪些决定,以找出 UI 在远程 Jenkins 从站中显示不正确的原因。
测试日志输出不包含来自应用程序的日志输出(通过NSLog
),我也无法在派生数据输出文件夹中的任何 .xcactivitylog 文件中找到来自 appNSLog
调用的任何字符串。
当我的应用程序正在由 UI 测试运行时,我在哪里可以找到我的日志记录输出?这是 Xcode 8.2 运行 iOS 9.3 模拟设备。
【问题讨论】:
你试过了吗? ***.com/questions/10165641/… 获取模拟器的 UUID 正是我想要的。谢谢! 这是确切的链接:***.com/a/10165649/71877 我在fastlane
的scan
操作中添加了功能来收集日志,include_simulator_logs
【参考方案1】:
以下解决方案有点 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;
【讨论】:
是的,这是将值传回 UITest 的一种方式。以上是关于ui测试时如何查看应用程序日志的主要内容,如果未能解决你的问题,请参考以下文章
如何编写在运行时确定视图内容的 Android UI 测试?