iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了单元测试 – XCTest失败,除非“非UI客户端无法自动恢复”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图将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");
}

我得到一个例外:
***由于未捕获的异常’NSInternalInconsistencyException’而终止应用程序,原因:’非UI客户端无法自动暂停’

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

解决方法

问题在于以下行

self.LOCATIOnManager.pausesLOCATIOnupdatesAutomatically = YES;

无法在未运行UI的应用程序上设置此属性(不确定原因,我找不到任何有关它的文档).

您可能希望在测试中进行一些检查,以确保在初始化GeoLOCATIOnservice并自动设置self.LOCATIOnManager.pausesLOCATIOnupdates之前已加载UI.

大佬总结

以上是大佬教程为你收集整理的单元测试 – XCTest失败,除非“非UI客户端无法自动恢复”全部内容,希望文章能够帮你解决单元测试 – XCTest失败,除非“非UI客户端无法自动恢复”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。