XCTestCase异步

时间:2018-09-06 04:50:00

标签: ios xctest xctestcase

我在方案中有XCTestCase

在XCTestCase主体中,有一些测试用例。 我只希望所有测试用例都在第一个测试用例成功完成后才开始出现的问题(出于特殊目的,第一个测试用例会响应 token ,以供其他测试用例使用)。

我不想将参数令牌添加到其他测试用例中。

因此,基本上,测试文件如下所示

class MyTestCase: XCTestCase {

    var token: String!

    override func setUp() {
        super.setUp()
        self.continueAfterFailure = false
    }

    func testGetToken() {
        asyncGetToken { token in
            self.token = token
            // From now, the test1 and test2 should be started.
        }
    }
    func test1() {
        //using token to make request etc
    }

    func test2() {
        //using token to make request etc
    }
}

有人建议简单的解决方案吗?

1 个答案:

答案 0 :(得分:1)

如评论中所述,您应该将令牌检索移至setUp方法中,该方法将允许在每次测试之前都检索令牌,并使您的测试彼此独立。

override func setUp() {
    super.setUp()
    self.continueAfterFailure = false

    let tokenExpectation = expectation(description: "get token")
    asyncGetToken { token in
        self.token = token
        tokenExpectation.fulfill()
    }
    let result = XCTWaiter().wait(for: [tokenExpectation], timeout: 5)
    XCTAssertEqual(result, .completed)
}