ios - 单元测试 Swift- 从 Storyboard 中转换 View Controller 不起作用

标签 ios iphone unit-testing swift

我写了下面的测试用例,它在 swift 1.1 中运行良好。但在 1.2 中它被打破了。

class AboutViewController_Tests: XCTestCase
{
//var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.dynamicType)) // Used in swift 1.1

var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle:NSBundle.mainBundle()) // Replaced this in swift 1.2
var aboutViewController:AboutViewController!

override func setUp()
{
super.setUp()
aboutViewController = storyboard.instantiateViewControllerWithIdentifier("AboutViewController") as! AboutViewController
aboutViewController.viewDidLoad()
XCTAssertNotNil(aboutViewController, "About not nil")
}
}

运行单元测试时出错

无法将“testProject.AboutViewController”类型的值 (0x105b0ad30) 转换为“testProjectTests.AboutViewController”(0x116e51d20)。

我已经做了足够的研究来解决这个问题。但是做不到。我希望你们中的一些人遇到过这个问题并且能够在这里帮助我。

最佳答案

几分钟前我遇到了同样的问题。这就是我解决它的方法。

  1. 将 Storyboard添加到测试目标
  2. 以这种方式加载 View Controller :
var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle:NSBundle(forClass: self.dynamicType))

self.vc = storyboard.instantiateViewControllerWithIdentifier("gettingStartedView") as! MainViewController

self.vc.loadView()

希望这对您有所帮助!

关于ios - 单元测试 Swift- 从 Storyboard 中转换 View Controller 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29669381/

相关文章:

ios - 如何将粗体和斜体应用于 NSMutableAttributedString 范围?

ios - 带有大标题的 UINavigationBar - 如何在 iOS 11 中找到额外的高度

ios - SWrevealviewcontroller 应该在登录后在欢迎屏幕上可见

swift - viewDidLoad 后未在测试中设置 XCTest 单元测试数据响应

java - 元类构造函数重写不适用于 @CompileStatic 带注释的类内部的方法

ios - 如果他们引用的对象被释放,守卫是否可以在使用 [weak self] 的闭包中让 `self` = self 导致崩溃?

iphone - 如何在 applicationDidEnterBackground/applicationWillEnterForeground 之后正确关闭/重启 NSThread

iphone - IBOutletCollection - 一次连接多个对象

java - 如何使用mockito测试方法条件

ios - 如何在 iOS 的最近通话记录中更新视频通话