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文件?