【发布时间】:2021-06-16 22:57:45
【问题描述】:
我正在尝试为 UIViewcontrollers 制作 UITestCase,但是当我在 QuizAppUITests 中加载主情节提要时,它无法从 Bundle 中识别出来,并且出现以下错误
在捆绑包 NSBundle 中找不到名为“Main”的情节提要/mac/Library/Developer/CoreSimulator/Devices/CC199C69-F398-4A7C-882E-BFD3E72B95D3/data/Containers/Bundle/Application/BCC3F88D-E08C -4491-8340-699EAF98AB28/QuizAppUITests-Runner.app>(已加载)(NSInvalidArgumentException)
我也在 QuizAppUITests Target 中添加了 Main Storyboard 下面是我的测试代码
import XCTest
@testable import QuizApp
class QuizViewControllerUITests: XCTestCase {
func makeSUT() -> QuizViewController {
let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: type(of: self)))
let sut = storyboard.instantiateViewController(withIdentifier: "QuizViewController") as! QuizViewController
_ = sut.view
return sut
}
func test_loadQuizViewController() {
let sut = makeSUT()
sut.headerQuestion = "Q1"
XCTAssertEqual(sut.headerQuestion, "Q1")
}
}
QuizAppUITestsTarget 的 BuildSetting 是否需要更改?
【问题讨论】:
-
你想做什么?我不知道你为什么要为 UITest 使用故事板。 iOS 中的 UITesting 还有其他更好的方法。
-
同意这是使用 XCUITest 的一种非常奇怪的方式。这就像一个单元测试 UI 测试。
-
@Kudos 我想检查来自情节提要的 instanceiateViewController 和情节提要是否存在于 Bundle 中。
标签: swift tdd xctest xcode12 xcuitest