我想在控制台的输出结尾处编写测试工件的路径。这会很方便。我也很好奇。
似乎XCTest以某种方式终止了app,app delegate没有收到生命周期回调,程序在main.m的main函数之前退出。
答案 0 :(得分:1)
专门查看Test Execution and Observation testBundleDidFinish。
如果您定义了一个采用XCTestObservation
的对象,您可以在测试套件运行期间的任何时候将其添加到XCTestObservationCenter.shared
实例,并在整个捆绑完成后接收呼叫。
答案 1 :(得分:0)
Jonah帮助了我,我也想在这里为其他人提供一些代码。
在任何测试之前开始观察有一个合适的方法。
测试包的Info.plist中有NSPrincipalClass
个密钥。把你的“主要类”的名称(谷歌更多信息)。就我而言,它是PrincipalClass
。加载测试包时,在主类中调用init
。这是我的PrincipalClass
:
@objc(PrincipalClass)
final class PrincipalClass: NSObject {
override init() {
TestObservationEntryPoint.instance.startObservation()
}
}
我能够使用Allure2制作出色的报告系统。在我提出这个问题时,报告并不是我想要的,但这是可能的,因为我找到了答案。它是XCTest中测试观察的一个很好的应用。
答案 2 :(得分:0)
对我来说,答案非常令人困惑。
func testYourTest() {
let expectation = XCTestExpectation(description: "Your action")
API.sharedInstance.yourRequestWithCompletionAndFailure(parameter: parameter, completion: { (response) in
//XCTAssert with response
expectation.fulfill()
}) { (error) in
//XCTAssert with your error
expectation.fulfill()
}
wait(for: [expectation], timeout: 30.0)
}
期待你倾听回应。不要忘记设置超时。 更多详情/来源:https://developer.apple.com/documentation/xctest/asynchronous_tests_and_expectations/testing_asynchronous_operations_with_expectations