我正在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)