ios - XCTestCase 异步

标签 ios xctest xctestcase

我在场景中有 XCTestCase

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

我不想给其他测试用例添加参数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
    }
}

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

最佳答案

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

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)
}

关于ios - XCTestCase 异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52196716/

相关文章:

text - 如何使 CATextLayer 中的文本清晰

ios - 如何定位 block 代码

ios - XCTest 中 viewDidLoad 的设置值

swift - XCTestCase 中未调用 UITextFieldDelegate

swift - 如何验证单元格在 UI 测试中是否可见

ios - UnitTest 我应该使用拆解和设置吗

ios - 我可以将 CloudKit 数据传输到新容器吗?

ios - 根据单击的 tableView 单元格指向不同的 ViewController

ios - XCTAssert/XCTFail 在异步回调中安全吗?

xcode5 - 是否可以在 Xcode 5 的 Instruments 下运行基于 XCTest 的测试?