각 테스트 케이스가 Xcode의 테스트 스위트에서 실행 된 후에 테스트 상태가 필요합니다. 나는 관찰자가 그것을 달성하는 것을 도울 수 있다는 것을 안다. 그런데 어떻게 테스트에 사용합니까?Xcode UI 테스트에서 실행 된 각 테스트 케이스의 결과 얻기
답변
올바른 추적을하고 있으며 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)")
}
}
위의 예제를 제공 한이 함수는 테스트 케이스 중 하나가 실패 할 때마다 호출되므로, 테스트 케이스 클래스 내에서 아무것도 수행 할 필요가 없다.
희망이 도움이됩니다.
실행 된 각 테스트 케이스의 결과는 *** TestSummeries.plist 파일에 저장됩니다. 당신이 당신의 테스트를 여러 번 그냥 실행 전에 DerivedData 내부의 모든 것을 삭제를 실행하면
당신은
~/Library/Developer/Xcode/DerivedData/<your-app-name>/Logs/Test/****_TestSummeries.plist
에서 그것을 발견 할 것이다. 그런 다음 하나의 TestSummeries.plist 만 찾을 수 있습니다.
그런 다음 plist를 구문 분석하고 plist 파일에서 원하는 데이터를 가져옵니다.
** 자세한 정보가 필요하면 아래에서 자유롭게 의견을 말하십시오.
그래, 결과는 그 파일에 저장되어 있지만, 나는 TestRail으로 테스트 결과를 업데이트하는이 전체 과정을 자동화 할 것이므로 더 효율적인 방법을 찾고 있었고 완벽해야한다. 테스트가 두 번 이상 실행되는 경우 데이터를 수동으로 삭제하지 않아도됩니다. – Khazana
더 자세히 설명해주세요. 또한 이타누르스트가보다 효율적인 방법으로 당신을 도울 수 있도록 지금까지 시도한 것을 언급하는 것을 잊지 마십시오. –
당신이 정확히 말한 경우 ** 도움이 될 것입니다. ** 당신이 이것을 필요로하는 이유 또는 귀하의 유스 케이스는 개인 단위 테스트는 일반적으로 독립형으로 만들어집니다. –
신속한 또는 객관적인 - C? –