【问题标题】:How to add helper methods to XCTestCase unit in Xcode?如何在 Xcode 中向 XCTestCase 单元添加辅助方法?
【发布时间】:2014-07-02 21:10:16
【问题描述】:

有没有办法将方法添加到您的 XCTestCase 而不将其计为测试? setUptearDown 之类的东西已经存在。

一个用例是在特定时间点对我的一些测试用例中的对象执行特定操作,同时访问类本身的实例变量(这提供了使用静态方法和外部帮助文件的可能性)

【问题讨论】:

  • 只需添加一个不以“test”开头的方法即可。
  • 哈利路亚,谢谢
  • @Rob 您应该将您的评论作为实际答案发布,以便 Madeban 可以接受它。
  • @hasseg 谢谢。当我发表评论时,我认为问题不仅仅是方法名称前缀。很高兴知道我们回答了 Madeban 的问题,无论如何。

标签: ios objective-c xcode xctest


【解决方案1】:

我在XCTAssert 函数中使用史蒂夫建议的可选line 参数,因此测试失败出现在调用站点并附加检查而不是测试,因此它不会被识别为一个。

private func checkSunSetsInTheEast(callLine: UInt = #line) {
    XCTFail(callLine: #line)
}

如果您希望您的断言在实际测试中可见,另一种选择是:

func testSun() {
    XCTAssert(sunSetsInEast)
}

private var sunSetsInEast: Bool { return false }

保留测试前缀并将测试设置为 private 将阻止它们作为测试运行,但 XCode 的 UI 仍会将它们识别为测试,因此最好避免在辅助函数开头添加前缀 test。

【讨论】:

    【解决方案2】:

    只有以test 开头的方法才会被视为测试。因此,只需将您的辅助方法命名为不以test 开头的名称。

    顺便说一句,我不倾向于将XCTAssert 语句放在您的辅助方法中。它可以工作(适当的测试会失败),但在某些情况下,很难判断哪些测试导致辅助方法中的断言触发。

    【讨论】:

    • 补充一点,在 Swift 中,您可以为辅助方法提供默认的行号参数,并将其传递给 XCTAssert。这样,测试失败将显示在正确的调用站点,而不是在辅助方法中。例如:func checkEqual(_ string: String, _ expected: String, line: UInt = #line) { XCTAssertEqual(.string, expected, line: line) }
    猜你喜欢
    • 1970-01-01
    • 2014-10-26
    • 2010-12-24
    • 1970-01-01
    • 2020-01-27
    • 2013-01-21
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多