【问题标题】:XCTest pass in isolation, fail when run with other testsXCTest 单独通过,与其他测试一起运行时失败
【发布时间】:2015-05-31 03:31:21
【问题描述】:

当我运行单个 XCTest 类时,其中的所有测试都会成功。

但是,当我将它与其他 XCTest 一起运行时,类中的一些测试会失败。

setUp 和 tearDown 方法正确实现如下:

- (void)setUp {
  [super setUp];
  ...
}

- (void)tearDown {
  ...
  [super tearDown];
}

我在应该在测试中执行的代码中设置了一个断点。当我单独运行测试时,到达了断点;当我在其他测试中运行它时,没有达到断点。我在想也许 XCTest 有一些缓存行为?如果是,如何关闭?

有谁知道为什么会发生这种情况?

非常感谢!

【问题讨论】:

  • 我只看到有一些全局状态或数据保存到影响不同 XCTest 类中的测试的文件时才会发生这种情况。抱歉,我无法提供更多帮助。
  • @LevLandau 我在应该在测试中执行的代码中设置了一个断点。当我单独运行测试时,到达了断点;当我在其他测试中运行它时,没有达到断点。我在想也许 XCTest 有一些缓存行为?如果是这样,如何关闭它?
  • 您需要发布测试代码本身,以便我们看到您正在使用的 XCTest 构造。
  • 这里没有缓存,其他东西可能会改变值导致您的测试失败。除非您发布更多代码,否则不可能知道发生了什么。

标签: ios iphone unit-testing xctest


【解决方案1】:

我看到了同样的行为,我的问题是因为我正在测试的方法中有一个静态变量,该变量在测试中保持其值。

【讨论】:

    【解决方案2】:

    当我一起运行所有测试时,我遇到了类似的问题。我可以通过将 Assertion 置于 Dispatch Delay 中来修复它,

     DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
           XCTAssert(self.response != nil)
        }
    

    我希望上述解决方案也适用于您。

    【讨论】:

      猜你喜欢
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多