website에서 도움말 도용, 작은 대기 함수를 실행하기 위해이 수정 프로그램을 구현하여 요소/페이지를 기다릴 수 있도록했습니다. /기타. 테스트를 계속하기 전에로드해야합니다. 수정 작업은 테스트에서 직접 코드를 사용해야하지만 다른 클래스의 유틸리티 메서드에 넣을 때 올바른 통과/실패 결과를 반환하지 않습니다. 다음 코드를 실행할 때UI 테스트 유틸리티 메서드로 어설 션이 실패 (Xcode 8, Swift 3)를 반환하지 않음
문제는 :
func testCreateGame() {
let app = LauncherUtilityMethods.startApp()
AllStageUtilityMethods().waitForElement(app.buttons["THISDOESNOTEXIST"])
가이 요소가 존재하지 않는,하지만 난 여전히 테스트 통과를 볼 수 있습니다. I는, 테스트가 그에 따라 통과/실패는 IF 문에 직접 XCTFail()를 삽입 한 후
func waitForElement(_ element: XCUIElement, file: String = #file, line: UInt = #line) {
let exists = NSPredicate(format: "exists == true")
expectation(for: exists, evaluatedWith: element, handler: nil)
waitForExpectations(timeout: 5) { (error) -> Void in
if (error != nil) {
let message = "Failed to find \(element) after 5 seconds."
self.recordFailure(withDescription: message, inFile: file, atLine: line, expected: true)
XCTFail()
}
}
: 여기 유틸리티 메소드이다. 이 시나리오를 처리하는 더 좋은 방법이 있습니까? 실제로 테스트를 두 번 이상 실패하는 것은 불필요한 것으로 보이지만 실제로는 하나만 실패로 표시됩니다.
XCTFail에 설명을 추가 할 수는 있지만 실제로는 .recordFailure 옵션과 같이 덜 우아합니다. 도움에 감사드립니다!
호출 할 수있는 꿈을 작동합니다. 고맙습니다! waitForElementToDisappear 코드는 아직 테스트하지 않았지만 코드의 작은 조합을 사용하여 오류 메시지를 얻었습니다 (테스트 자체에서). –
도움이 되셨다고 :) – Shahid