小编Bre*_*iot的帖子

如何在运行测试之前让XCTest等待setUp中的异步调用?

我正在Xcode 6中编写集成测试,以便与我的单元和功能测试一起使用.XCTest有一个setUp()方法,在每次测试之前都会调用它.大!

它还有XCTestException,它让我编写异步测试.也很棒!

但是,我希望在每次测试之前用测试数据填充我的测试数据库,并且setUp只是在异步数据库调用完成之前开始执行测试.

有没有办法让setUp在运行测试之前等待我的数据库准备就绪?

这是我现在所做的一个例子.由于setUp在数据库完成填充之前返回,我必须在每次测试时复制大量测试代码:

func test_checkSomethingExists() {

    let expectation = expectationWithDescription("")
    var expected:DatabaseItem

    // Fill out a database with data. 
    var data = getData()
    overwriteDatabase(data, {
      // Database populated.
      // Do test... in this pseudocode I just check something...
      db.retrieveDatabaseItem({ expected in

        XCTAssertNotNil(expected)

        expectation.fulfill()
      })
    })

    waitForExpectationsWithTimeout(5.0) { (error) in
        if error != nil {
            XCTFail(error.localizedDescription)
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

这就是我想要的:

class MyTestCase: XCTestCase {

    override func setUp() {
        super.setUp()

        // Fill out a database with data. I can …
Run Code Online (Sandbox Code Playgroud)

xcode unit-testing asynchronous xctest swift

48
推荐指数
3
解决办法
2万
查看次数

标签 统计

asynchronous ×1

swift ×1

unit-testing ×1

xcode ×1

xctest ×1