gpt4 book ai didi

ios - 从 XCTestCase 子类访问 App Delegate - 类型错误?

转载 作者:行者123 更新时间:2023-11-28 07:01:59 24 4
gpt4 key购买 nike

<分区>

我刚刚开始在 Xcode 中进行单元测试,所以我决定尝试一下使用 Xcode 的任何项目模板创建的默认测试目标。

作为开始,我决定执行一个非常基本的测试,看看 AppDelegate 实例的 window 属性(类型为 UIWindow?)实际上是设置的。

这是我的测试代码:

import UIKit
import XCTest

import Sample // This is the App target (app is called "Sample")

class SampleTests: XCTestCase
{
override func setUp(){
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}

override func tearDown(){
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}

func testExample(){
// This is an example of a functional test case.

if let delegate = UIApplication.sharedApplication().delegate{

if let myDelegate = delegate as? AppDelegate {

if let window = myDelegate.window {

XCTAssert(true, "Pass")
}
else{
XCTFail("App Delegate Has No Window")
}
}
else{
XCTFail("Application Delegate Object Is of The Wrong Type")
}
}
else{
XCTFail("Application Delegate Not Present")
}
}
}

起初,我无法构建测试目标,因为无法访问 AppDelegate 类。我尝试了两种方法,结果不同:

  1. 如果我将我的 AppDelegate 类及其所有属性/方法标记为公共(public),测试构建没有错误并成功(即, window optional is not nil).

  2. 如果相反,我将 AppDelegate 的类、属性和方法标记为 internal,但修改源文件的目标成员资格以使其也属于测试目标(而不仅仅是应用程序目标) , 测试构建没有错误但失败了(“Application Delegate Object Is of The Wrong Type”,即条件转换为 AppDelegate 类型失败).

看起来好像使用第二种方法,不同的应用程序委托(delegate)在运行时出现。有人知道发生了什么吗?

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