【问题标题】:How to view app logging when ui testingui测试时如何查看应用程序日志
【发布时间】:2017-05-20 03:36:58
【问题描述】:

在我的 Jenkins CI 从属设备上运行我的 iOS 应用程序的 UI 测试时,UI 不正确并且我的测试失败。在本地,与预期相同的 UI 并通过了测试。

我无法弄清楚这一点,也无法调试它,因为它在远程机器上。因此,我想添加日志记录以查看应用程序正在做出哪些决定,以找出 UI 在远程 Jenkins 从站中显示不正确的原因。

测试日志输出不包含来自应用程序的日志输出(通过NSLog),我也无法在派生数据输出文件夹中的任何 .xcactivitylog 文件中找到来自 appNSLog 调用的任何字符串。

当我的应用程序正在由 UI 测试运行时,我在哪里可以找到我的日志记录输出?这是 Xcode 8.2 运行 iOS 9.3 模拟设备。

【问题讨论】:

标签: xctest xcode-ui-testing ui-testing


【解决方案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 的一种方式。
猜你喜欢
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
相关资源
最近更新 更多