当前测试用例成功/失败

Posted

技术标签:

【中文标题】当前测试用例成功/失败【英文标题】:Current test case success/failure 【发布时间】:2016-05-26 15:09:23 【问题描述】:

我有一个 XCTestCase 正在编写一些资产,如果它成功,我想清理它。我发现有一个静态的 tearDown() 方法可以覆盖,该方法在测试用例结束时执行。如何知道测试用例是否成功?

【问题讨论】:

您想知道以显示自定义日志消息吗? 不是我想在成功的情况下进行一些清理。 【参考方案1】:

XCTestObserver 现已弃用,因此您应该使用 XCTestObservationCenter

您应该实现一个符合XCTtestObservationobserver

XCTestObservationCenter.sharedTestObservationCenter().addTestObserver(observer)

XCTestObservation.swift中的苹果员工报价:

用于在测试运行期间获得进度通知的挂钩。

你可以在Print Observer找到如何处理testCaseDidFinish

func testCaseDidFinish(_ testCase: XCTestCase) 
    let testRun = testCase.testRun!
    let verb = testRun.hasSucceeded ? "passed" : "failed"
    // FIXME: Apple XCTest does not print a period after "(N seconds)".
    //        The trailing period here should be removed and the functional
    //        test suite should be updated.
    printAndFlush("Test Case '\(testCase.name)' \(verb) (\(formatTimeInterval(testRun.totalDuration)) seconds).")

【讨论】:

我应该在哪里运行 addTestObserver() 方法以便在测试包开始之前执行它?【参考方案2】:

XCTest 有一个属性testRun,它为您的测试返回XCTestRun,它有一个hasSucceeded 属性。

http://masilotti.com/xctest-documentation/Classes/XCTestRun.html

【讨论】:

我处理的是XCTestCase而不是XCTest,我怎样才能得到这个testRunClass属性? XCTestCase 是 XCTest 的子类,所以它应该可以从两者访问? masilotti.com/xctest-documentation/Classes/XCTestCase.html 它几乎可以工作,但我正在努力将 testRunClass 属性转换为 XCTestRun 实例,知道吗? 糟糕,对不起!看起来您需要在 XCTest 上使用 testRun,它返回用于运行测试的 XCTestRun 实例,您应该可以在上面调用 .hasSucceeded。我会更新我的答案。

以上是关于当前测试用例成功/失败的主要内容,如果未能解决你的问题,请参考以下文章

2编写单元测试用例,对用户注册功能的DAO层进行测试。(注意:测试用例应考虑成功和失败的情况)

自动化断言失败后,测试用例还会继续执行吗

以下题目均在bookstore项目上完成(请先运行数据库文件): 1编写单元测试用例,对用户注册功能的Action层进行测试。(注意:测试用例应考虑成功和失败的情况)

如何断言在selenium测试用例的登录成功

日程管理APP测试用例

unittest+ddt