【发布时间】:2019-05-14 08:25:28
【问题描述】:
在这里,我正在尝试检查视图控制器的单元测试用例。
- 我有一个带有按钮和标签的视图控制器。
- 当你点击按钮时,它会调用另一个方法。它将数据提供给按钮操作标签文本更改。
- 我想检查那个按钮是否触发了那个方法?不添加函数的任何布尔值或返回类型。
这是我的代码。
class ViewController: UIViewController {
@IBOutlet weak var buttonFetch: UIButton?
@IBOutlet weak var nameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func fetchUser() {
self.nameLabel.text = self.getUser()
}
func getUser() ->String {
return User.data()
}
}
struct User {
static func data()->String{
return "Apple"
}
}
这是我的测试用例
func testFetchUserAction() {
controller.buttonFetch?.sendActions(for: .touchDown)
// I want to test the method getUser from viewcontroller gets called or not
// some thing like this XCTAssert(self.controller.getUser(),"not called")
XCTAssertEqual(self.controller.nameLabel.text!, "Apple")
}
【问题讨论】:
-
为什么不使用 XCUITest 进行 ui 测试,比如按钮是否被点击?
-
@JatinKathrotiya 单元测试比 UI 测试快得多。
-
那么你的目标是自相矛盾的。单元测试测试业务逻辑。如果你想测试点击按钮有什么效果,那就是 UI 测试。
-
@matt 单元测试测试你想要的任何东西。不要限制自己。我住在单元测试视图控制器上。 qualitycoding.org/testing-view-controllers
-
值得肯定的论据。
标签: ios swift xctest xctestcase