Ios 如何在视图更改时进行单元测试?
目前我正在尝试测试一些简单的函数:Ios 如何在视图更改时进行单元测试?,ios,swift,unit-testing,xctest,xcode-ui-testing,Ios,Swift,Unit Testing,Xctest,Xcode Ui Testing,目前我正在尝试测试一些简单的函数: class SampleViewController: UIViewController { @IBOutlet weak var sampleView: UIView! override func viewDidLoad() { super.viewDidLoad() } func hideView() { sampleView.isHidden = true } func
class SampleViewController: UIViewController {
@IBOutlet weak var sampleView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
func hideView() {
sampleView.isHidden = true
}
func showView() {
sampleView.isHidden = false
}
}
以下是测试用例:
import XCTest
@testable import unitUITestPractice
class unitUITestPracticeTests: XCTestCase {
var sut: SampleViewController?
override func setUp() {
super.setUp()
sut = SampleViewController()
}
override func tearDown() {
sut = nil
super.tearDown()
}
func test_hideView() {
sut?.hideView()
XCTAssertNil(sut?.sampleView)
}
func test_showView() {
sut?.showView()
XCTAssertNotNil(sut?.sampleView)
}
}
问题是我不断地得到错误:
线程1:致命错误:在展开文件时意外发现nil
可选值
在测试用例中尝试并运行函数时:
func hideView() {
sampleView.isHidden = true //error here
}
有人知道测试视图是否已更改的更好方法吗?您需要通过故事板,
UIStoryboard(名称:“Main”,bundle:nil)实例化viewController(标识符为:“ViewControllerIdentifier”)!SampleViewController
。此外,如果正确实例化,视图将永远不会为零,在这种情况下,您希望根据视图ishiden
属性进行测试,检查true
或false
,如@JustinM建议的那样创建viewController。您必须在内存中加载视图。也可以执行viewController.viewdidLoad()或viewController.view
。然后所有视图元素(sampleView)都将有一个值。然后您必须断言该视图的属性。(对于sampleView的可见性/隐藏)您有一个插座。您的视图控制器是来自故事板还是来自xib文件?