在Xcode的测试套件中执行每个测试用例后,我需要测试状态。我知道观察者可以帮助实现它。但是我如何在测试中使用它?
答案 0 :(得分:7)
您走在正确的轨道上,可以通过XCTestObservation协议(https://developer.apple.com/documentation/xctest/xctestobservation)实现您想要做的事情。您可以向测试用例类添加一个观察者,我建议在setUp()方法中执行此操作,因为它在每个测试方法之前执行。
override func setUp() {
super.setUp()
continueAfterFailure = false
XCUIApplication().launch()
XCTestObservationCenter.shared.addTestObserver(UITestObserver())
}
为此,您应该实现一个符合XCTestObservation协议的类,然后为您感兴趣的方法提供您自己的实现,以执行您需要/想要的任何操作。在您的情况下,您可能希望为此方法提供实现...
optional public func testCase(_ testCase: XCTestCase, didFailWithDescription description: String, inFile filePath: String?, atLine lineNumber: Int)
以下是此测试观察者类可能看起来像的一个简单示例...
import XCTest
public class UITestObserver: NSObject, XCTestObservation {
public func testCase(_ testCase: XCTestCase,
didFailWithDescription description: String,
inFile filePath: String?,
atLine lineNumber: Int) {
print("failure description: \(description)")
print("failed test case: \(testCase)")
if let filePath = filePath {
print("failure at file path: \(filePath)")
}
print("failure at line: \(lineNumber)")
}
}
这个函数我提供了一个上面的例子,只要你的一个测试用例失败就会被调用,所以你不需要在测试用例类或方法中“做”任何事情。
希望这有帮助!
答案 1 :(得分:0)
执行的每个测试用例的结果都保存在名为*** TestSummeries.plist的文件中。
你会在
下找到它~/Library/Developer/Xcode/DerivedData/<your-app-name>/Logs/Test/****_TestSummeries.plist
如果多次运行测试,只需在执行前删除DerivedData中的所有内容。然后你只能找到一个TestSummeries.plist。
然后解析plist并从plist文件中获取所需的数据。
**如果您需要更多相关信息,请随时在下面发表评论。