代码之家  ›  专栏  ›  技术社区  ›  artyom.razinov

iOS单元测试:如何处理测试的完成?

  •  2
  • artyom.razinov  · 技术社区  · 8 年前

    我想在控制台的输出末尾写下测试工件的路径。这很方便。我也只是好奇。

    3 回复  |  直到 8 年前
        1
  •  3
  •   Jonah    8 年前

    看看 Test Execution and Observation 明确地 testBundleDidFinish

    如果定义一个对象,该对象采用 XCTestObservation XCTestObservationCenter.shared 在测试套件运行过程中的任何时间点执行,并在整个捆绑包完成时接收调用。

        2
  •  3
  •   artyom.razinov    8 年前

    乔纳帮了我,我也想在这里为其他人编写一些代码。

    要在任何测试之前开始观察,有一种合适的方法。 NSPrincipalClass PrincipalClass . 加载测试包时, init 在主类中调用。这是我的 :

    @objc(PrincipalClass)
    final class PrincipalClass: NSObject {
        override init() {
            TestObservationEntryPoint.instance.startObservation()
        }
    }
    

    我能够用Allure2制作很酷的报告系统。当我问这个问题的时候,报道并不是我想要的,但这是可能的,因为我找到了答案。这是测试观察在XCTest中的一个很好的应用。

        3
  •  0
  •   kuzdu    8 年前

    func testYourTest() {
     let expectation = XCTestExpectation(description: "Your action")
    
     API.sharedInstance.yourRequestWithCompletionAndFailure(parameter: parameter, completion: { (response) in
    
     //XCTAssert with response
    
     expectation.fulfill()
     }) { (error) in
      //XCTAssert with your error
     expectation.fulfill()
     }
    
     wait(for: [expectation], timeout: 30.0)
    }
    

    更多详细信息/来源: https://developer.apple.com/documentation/xctest/asynchronous_tests_and_expectations/testing_asynchronous_operations_with_expectations