【问题标题】:XCTest is not giving me accurate results each time (Sometimes it fails, sometimes it passes)XCTest 每次都没有给我准确的结果(有时会失败,有时会通过)
【发布时间】:2017-06-23 08:43:18
【问题描述】:

我正在使用 XCode 8.2.1 (Swift) 和 XCode UI 测试来测试我的应用程序的 UI,所以我对这个工具的问题是它没有给我准确的结果,一些测试通过了,下次他们失败了。

我的问题可能很笼统,但这个问题与我有关还是很常见?我相信这是在迁移到 XCode 7+ 之后发生的

你们是否建议使用除此之外的其他工具进行 UI 测试?因为我正在寻找更快、更准确且能够与 CI 服务器集成的能力。

【问题讨论】:

  • 您应该指定您的问题。它太大了。
  • 显示一个以这种方式运行的测试。
  • 我遇到过这种不一致的情况。在某些情况下,这是由测试的设置方式引起的,在其他情况下,这似乎是测试框架的不可靠性。
  • 我只需要知道这是一个常见问题还是我的情况。我可以编辑我的帖子并分享其中一项测试,但正如我所说的那样,这是一个常规测试。
  • 也许您遇到了竞争状况。 XCTest 可以非常快,因此请尝试使用 expectForPredicate 和 waitForExpectationsWithTimeout - 这些可能会稳定您的测试。如果没有具体问题,无法提供更多建议。

标签: ios swift xcode xctest uitest


【解决方案1】:
private func waitForElementToAppear(element: XCUIElement,
                                    file: String = #file, line: UInt = #line) {
    let existsPredicate = NSPredicate(format: "exists == true")
    expectation(for: existsPredicate,
                evaluatedWith: element, handler: nil)

    waitForExpectations(timeout: 30) { (error) -> Void in
        if (error != nil) {
            let message = "Failed to find \(element) after 30 seconds."
            self.recordFailure(withDescription: message,
                               inFile: file, atLine: line, expected: true)
        }
    }
}

调用此方法并避免测试失败,因为有时我们的 UI 需要更多时间从服务器获取结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-15
    • 2014-05-01
    • 2021-07-12
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    相关资源
    最近更新 更多