当前测试用例成功/失败
Posted
技术标签:
【中文标题】当前测试用例成功/失败【英文标题】:Current test case success/failure 【发布时间】:2016-05-26 15:09:23 【问题描述】:我有一个 XCTestCase 正在编写一些资产,如果它成功,我想清理它。我发现有一个静态的 tearDown() 方法可以覆盖,该方法在测试用例结束时执行。如何知道测试用例是否成功?
【问题讨论】:
您想知道以显示自定义日志消息吗? 不是我想在成功的情况下进行一些清理。 【参考方案1】:XCTestObserver 现已弃用,因此您应该使用 XCTestObservationCenter
。
您应该实现一个符合XCTtestObservation
的observer
。
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层进行测试。(注意:测试用例应考虑成功和失败的情况)