我写了下面的测试用例,它在 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)。
我已经做了足够的研究来解决这个问题。但是做不到。我希望你们中的一些人遇到过这个问题并且能够在这里帮助我。
最佳答案
几分钟前我遇到了同样的问题。这就是我解决它的方法。
- 将 Storyboard添加到测试目标
- 以这种方式加载 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/