这个问题通常是由于测试用例中发生了逻辑错误,导致同一个期望被多次 fulfill。为了解决这个问题,可以进行如下步骤:
1.检查测试代码,确保测试用例中不会多次对同一个期望进行 fulfill 操作。
2.使用 XCTestExpectation 的 isFulfilled 属性,判断测试用例中期望是否已经被 fulfill,如果已经被 fulfill,就不再执行 fulfill 操作了。代码示例如下:
let expectation = expectation(description: "Test API")
if !expectation.isFulfilled {
expectation.fulfill()
}
3.使用 XCTWaiter 等待期望被 fulfill,不需要手动调用 fulfill。代码示例如下:
let expectation = expectation(description: "Test API")
let result = XCTWaiter.wait(for: [expectation], timeout: 1.0)
if result == .completed {
//期望已经被 fulfill
}
通过上述步骤,可以有效避免 API violation - multiple calls made to -[XCTestExpectation fulfill] 问题的发生。