Ios Swift4单元测试:类型转换时未找到ViewController
我目前正在使用以下代码在Ios Swift4单元测试:类型转换时未找到ViewController,ios,swift,unit-testing,swift4,Ios,Swift,Unit Testing,Swift4,我目前正在使用以下代码在MyViewController类上编写测试: let viewController = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "MyViewController") XCTAssertNotNil(viewController.view) XCTAssertNotNil(viewController as? MyViewContr
MyViewController
类上编写测试:
let viewController = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "MyViewController")
XCTAssertNotNil(viewController.view)
XCTAssertNotNil(viewController as? MyViewController)
此测试不起作用,第二个断言总是失败。调试时,我可以看到我的viewController
具有正确的类型,但类型转换似乎总是失败
(lldb) po viewController
MyProject.MyViewController: 0x7f900c835600
(lldb) po viewController as? MyViewController
nil
MyViewController
的代码和情节提要正确地包含在测试项目中。还包括椰子荚
我在一个空项目上进行了测试,问题仍然存在
有人有同样的问题吗?我错过什么了吗
编辑。我将代码更改为:
let viewController = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "MyViewController") as? MyViewController
XCTAssertNotNil(viewController)
但是问题仍然存在。您是否用以下内容替换您的测试:
XCTAssertTrue(viewController is MyViewController)
我尝试了以下方法(我始终使用ViewController):
那个测试通过了
所以我尝试了你的第二种写作方式:
let viewController = UIStoryboard(
name: "Main", bundle: Bundle.main).instantiateViewController(
withIdentifier: "ViewController") as? ViewController
XCTAssertNotNil(viewController)
它通过我的机器
如果它不适合你,可能是因为:
- 您未能对主模块执行
,或者@testable import
- 你有一个模棱两可的类,你需要说
,或as?MyProject.MyViewController
- 找不到具有该标识符的视图控制器,或
- 具有该标识符的视图控制器不是MyViewController
但是,不管怎样,测试告诉了你真相,你需要思考这个真相。您没有给我们提供足够的信息来知道哪些是您的错误。您是否
@testable导入了您的模块?您粘贴的代码对我来说很好,显然是在我的故事板/视图控制器名称中交换@已设置可测试的导入MyProject。如果我显式调用MyProject.MyViewController而不是MyViewController,那么测试结果就是我没有显式调用MyProject.MyViewController。我在github上上传了该项目,请随意查看
let viewController = UIStoryboard(
name: "Main", bundle: Bundle.main).instantiateViewController(
withIdentifier: "ViewController") as? ViewController
XCTAssertNotNil(viewController)