在UI测试期间访问/修改Xcode中的AppDelegate

时间:2015-11-11 01:47:09

标签: ios xcode swift xcode-ui-testing

在Xcode 7中为UI测试创建新目标时生成的初步骨架如下所示:

    override func setUp() {
        super.setUp()

        // Put setup code here. This method is called before the invocation of each test method in the class.

        // In UI tests it is usually best to stop immediately when a failure occurs.
        continueAfterFailure = false
        // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
        XCUIApplication().launch()

        // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
    }

我有AppDelegate使用服务提供商访问各种存储库,例如UserService用于查找用户等。

在我的单元测试包中,我有一个MockUserService,它允许直接操作底层数据以进行测试。 一个解决方案是将其添加到主应用程序包中,让AppDelegate检查启动环境,并在给定一些测试标志/环境变量的情况下分配Mock实现。这里的缺点是我必须通过应用程序发送我的Mock实现 - 所以不要去。

我会喜欢,在上面的setUp()方法中,执行以下操作:

XCUIApplication().delegate.serviceProvider = MockServiceProvider()

但是我似乎找不到在UI测试期间访问应用程序委托的简单方法,以使其进入“可测试”状态。

如何在此阶段访问/修改代表或基础应用程序的任何部分?

0 个答案:

没有答案