XCTestCase асинхронный - PullRequest
       10

XCTestCase асинхронный

0 голосов
/ 06 сентября 2018

У меня есть XCTestCase в сценарии

В теле XCTestCase есть набор тестовых случаев. Проблема, которую я хочу, чтобы все тестовые наборы начинались после того, как самый первый тестовый пример завершился успешно (в моей специальной цели первый ответ тестового примера a токен для другого тестового случая, использующего).

Я не хочу добавлять параметр 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 голосов
/ 07 сентября 2018

Как упоминалось в комментариях, вы должны переместить получение токена в метод 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)
}
...