gpt4 book ai didi

unit-testing - XCTest 失败,出现异常 'Non-UI clients cannont be autopaused'

转载 作者:行者123 更新时间:2023-12-01 00:50:13 24 4
gpt4 key购买 nike

我正在尝试使用默认参数将 CLLocationManager 的创建测试为单音:

+ (GeolocationService *)defaultGeolocationService
{
static GeolocationService *_defaultGeolocationService = nil;

static dispatch_once_t oncePredicate;

dispatch_once(&oncePredicate, ^{
_defaultGeolocationService = [[GeolocationService alloc] init];
[_defaultGeolocationService initLocationManager];
});

return _defaultGeolocationService;
}

- (void)initLocationManager
{
self.locationManager = [CLLocationManager new];
self.locationManager.delegate = self;
self.locationManager.pausesLocationUpdatesAutomatically = YES;
[self.locationManager requestAlwaysAuthorization];
}

测试看起来像这样:
- (void)testInitWithDefaultsSettings
{
GeolocationService *defaultGeolocationService = [GeolocationService defaultGeolocationService];

XCTAssertTrue(defaultGeolocationService.settings.autoPause, @"autoPause");
}

我得到一个异常(exception):
*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“非 UI 客户端不能自动暂停”

我应该怎么做才能使这个测试工作?

最佳答案

问题在于以下行

self.locationManager.pausesLocationUpdatesAutomatically = YES;

无法在未运行 UI 的应用程序上设置此属性(不知道为什么,我找不到任何有关它的文档)。

您可能希望在您的测试中进行一些检查以确保在初始化您的 GeoLocationService 之前 UI 已加载。和设置 self.locationManager.pausesLocationUpdatesAutomatically .

关于unit-testing - XCTest 失败,出现异常 'Non-UI clients cannont be autopaused',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31729601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com