【问题标题】:Cannot cast App Delegate to App Delegate in XCTest无法在 XCTest 中将 App Delegate 强制转换为 App Delegate
【发布时间】:2016-10-30 12:40:25
【问题描述】:

我在 Xcode 7.3.1 中的 ios 应用程序中工作。我正在尝试在我的 swift iOS 应用程序上开始单元测试。我看不到访问使用我的 appDelegate 的任何内容。我尝试了以下解决方法。但仍然遇到同样的问题。请帮我解决这个问题。 link1, link2

我在运行单元测试时遇到以下问题。 我的示例代码是

import UIKit
import XCTest

@testable import MyAppName

class FreshBossTests: XCTestCase {

    var login:LoginPageController!
    override func setUp() {
        super.setUp()
        login = LoginPageController()
    }
    override func tearDown() {
        super.tearDown()
    }
    func testlogin() {
        let email:String! = "xxx@gmail.com"
        if login.isValidEmail(email) == true {
            XCTAssertEqual(true, true,"email in valid  format")
        }
    }

在我的 LoginPageController 中,我有以下代码。

let appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

在该行中只会出现类似

的错误
Could not cast value of type 'MyAppName.AppDelegate' (0x10dc09e80) to 'MyAppNameTests.AppDelegate' (0x11cc190c0).

【问题讨论】:

  • 显示你的相关代码?
  • 你的应用叫MyAppName?真的吗?真的吗?
  • no.. 我已经给样品起了这个名字..

标签: ios iphone xcode unit-testing xctest


【解决方案1】:

按照 matt 的建议,像 ProductModuleName.AppDelegate 一样使用它。所以在你的情况下,它会是

let appDelegate = UIApplication.sharedApplication().delegate as! MyAppName.AppDelegate

MyAppName 应该是您的应用程序目标模块的名称,而不是您的测试目标。如果您不确定模块名称在应用目标构建设置中搜索 Product Module Name

【讨论】:

  • 我也试过了。但是“使用未声明的类型 MyAppName”得到这个错误
  • 检查目标构建设置中的产品模块名称。你确定MyAppName 是模块名称吗?应用名称和模块名称可以不同
【解决方案2】:

在您的 setup() 函数中,而不是“login = LoginPageController()” 使用这些行

let storyBoard = UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.dynamicType))
    login = storyBoard.instantiateViewControllerWithIdentifier("LoginView") as! LoginPageController

我遇到了同样的问题,这帮助了我。

【讨论】:

    【解决方案3】:

    您可以在 XCTest 文件的顶部导入生产模块。

    @testable import MyAppName

    这会让你像这样投射:

    斯威夫特 3

    let appDelegate = UIApplication.shared.delegate as! MyAppName.AppDelegate

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      相关资源
      最近更新 更多