首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XCTestCase异步

XCTestCase异步
EN

Stack Overflow用户
提问于 2018-09-06 04:49:59
回答 1查看 196关注 0票数 0

我在场景中有XCTestCase

在XCTestCase主体中,有一组测试用例。我只希望所有测试用例都在第一个测试用例成功完成后开始(在我的特殊用途中,第一个测试用例响应是用于其他测试用例的令牌)。

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

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

代码语言:javascript
复制
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
    }
}

有人建议简单的解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-09-07 06:57:05

正如注释中提到的那样,您应该将令牌检索移到setUp方法中,这将允许在每个测试之前检索令牌,并且使您的测试彼此独立。

代码语言:javascript
复制
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)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52196716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档