gpt4 book ai didi

iOS swift : Separate AppDelegate for XCTest

转载 作者:IT王子 更新时间:2023-10-29 05:21:22 25 4
gpt4 key购买 nike

由于一些问题,我希望项目中的 XCTest 目标运行单独的应用委托(delegate)。使用 ObjC,这是一个相对简单的过程:操作 main.m(参见:https://stackoverflow.com/a/15725328/1299041)。

既然 Swift 应用程序似乎是在 AppDelegate 中使用 @UIApplicationMain 初始化的,那么是否可以为测试目标使用单独的 AppDelegate 进行初始化?

最佳答案

如果正在测试,强烈不建议在正常代码检查中添加条件。相反,你应该在测试中模拟你的 AppDelegate 来做任何你想做的事。

然后您可以在每个 XCTestCase 的父类(super class)中替换 UIApplication is setUp 的委托(delegate)。

class MockAppDelegate:NSObject, UIApplicationDelegate {

}


class BaseTest: XCTestCase {

override func setUp() {
super.setUp()
UIApplication.shared.delegate = MockAppDelegate()
}
}
class Test1: BaseTest {

override func setUp() {
super.setUp()
// normal testing
}
}

如果您仍想停止代码执行以进行测试,这是我的有效方法:

可以给app加上启动参数,表示这是试运行 App Start execution

这些参数可以从 NSUserDefaults

访问
#define IS_TESTS [[NSUserDefaults standardUserDefaults] boolForKey:@"TESTING"]

关于iOS swift : Separate AppDelegate for XCTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27930137/

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