指定AppDelegate的单元测试在XCode 7上崩溃

时间:2015-09-02 09:14:37

标签: ios unit-testing ios8 appdelegate xcode7-beta6

我的单位测试目标在Xcode 7上崩溃。

我使用指定的应用委托类对我的项目执行单元测试,这与我的常规应用委托不同。 UnitTestAppDelegate不是应用目标的成员,只是测试目标的成员。

在Xcode 6中,它正常工作,使用了正确的委托,但在Xcode 7(beta 6)中,当尝试加载测试委托时,应用程序崩溃了。我使用iOS 8和9的模拟器进行测试。

应用目标不知道该文件:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unable to instantiate the UIApplication delegate instance. No class named UnitTestAppDelegate is loaded.'

我的main.m文件如下所示:

int main(int argc, char* argv[])
{
    int returnValue;   

    @autoreleasepool
    {
        if (NSClassFromString(@"XCTest") != nil)
        {
            //use the test delegate
            returnValue = UIApplicationMain(argc, argv, nil, @"UnitTestAppDelegate");
        }
        else
        {
            //use the normal delegate
            returnValue = UIApplicationMain(argc, argv, nil, @"AppDelegate");
        }
    }

    return returnValue;
}

我还附上了我的方案配置的屏幕截图(运行和测试是在同一个方案中,虽然我也尝试将它们分开)。

enter image description here

将我的UnitTestAppDelegate添加为应用目标的成员会修复崩溃,但我显然不想将该文件添加到我的应用中。

其他人遇到过这个?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

请参阅此相关评论,了解与Xcode 7测试版6中所见相同的问题:http://qualitycoding.org/app-delegate-for-tests/#comment-63240