如何使用 Xcode 单元测试测试没有参数的 void 类方法

Posted

技术标签:

【中文标题】如何使用 Xcode 单元测试测试没有参数的 void 类方法【英文标题】:How to test a void class method without arguments with Xcode Unit Test 【发布时间】:2017-08-04 08:54:54 【问题描述】:

我有一个类有一个不带参数的 void 方法,想知道这种方法是否可以通过单元测试进行测试?如果是,那么应该测试什么?

上下文:

我有一个视图控制器,想展示一个带有取消按钮的操作表。

class LoginVC: UIViewController 
    func showLoginError() 
            let alertController: UIAlertController = UIAlertController.init(title: "Erreur", message: "Nous ne sommes pas parvenu à vous connecter, vérifiez vos informations.", preferredStyle: .alert)
            let closeAction = UIAlertAction.init(title: "Ok", style: .cancel, handler:  (action) in
                self.userAddressField.becomeFirstResponder()
            )
            alertController.addAction(closeAction)
            self.present(alertController, animated: true, completion: nil)
        

【问题讨论】:

请添加更多上下文。您使用什么语言/框架?为什么你觉得 XCode 有一些特殊的测试? 【参考方案1】:

您可以测试任何导致可观察行为或对您可以控制的对象产生影响的事物。

换句话说:void 方法的目的很可能是更改对象/数据存储中的相同状态...所以从这个意义上说,您可以:

只需在调用方法之前/之后检查相应的状态 使用一些模拟框架来确保对提供给被测代码的模拟的预期调用确实发生了

理想情况下,您更喜欢第一类测试。有关更多见解,请参阅 here 或 there。不同的语言,但提供了普遍适用的理论背景。

【讨论】:

以上是关于如何使用 Xcode 单元测试测试没有参数的 void 类方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xcode 4 运行单元测试的子集

如何修复 @testable 导入无法在 xcode 单元测试中加载模块

Jenkins 和 Xcode5 单元测试目标 - 没有测试输出?

在 Xcode 单元测试中使用 @testable 时“没有这样的模块”

swift Xcode单元测试:无法将“Person”类型的值转换为预期的参数类型“Person”

如何在 Xcode 中加载本地 json 文件以进行单元测试?