2017-12-19 39 views
1

각 테스트 케이스가 Xcode의 테스트 스위트에서 실행 된 후에 테스트 상태가 필요합니다. 나는 관찰자가 그것을 달성하는 것을 도울 수 있다는 것을 안다. 그런데 어떻게 테스트에 사용합니까?Xcode UI 테스트에서 실행 된 각 테스트 케이스의 결과 얻기

+0

더 자세히 설명해주세요. 또한 이타누르스트가보다 효율적인 방법으로 당신을 도울 수 있도록 지금까지 시도한 것을 언급하는 것을 잊지 마십시오. –

+0

당신이 정확히 말한 경우 ** 도움이 될 것입니다. ** 당신이 이것을 필요로하는 이유 또는 귀하의 유스 케이스는 개인 단위 테스트는 일반적으로 독립형으로 만들어집니다. –

+0

신속한 또는 객관적인 - C? –

답변

0

올바른 추적을하고 있으며 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)") 
    } 
} 

위의 예제를 제공 한이 함수는 테스트 케이스 중 하나가 실패 할 때마다 호출되므로, 테스트 케이스 클래스 내에서 아무것도 수행 할 필요가 없다.

희망이 도움이됩니다.

+0

대단히 감사합니다. 매우 도움이되었습니다. – Khazana

+0

@Khazana 제 답변을 해결책으로 받아 주시겠습니까? :) – atgrubb

0

실행 된 각 테스트 케이스의 결과는 *** TestSummeries.plist 파일에 저장됩니다. 당신이 당신의 테스트를 여러 번 그냥 실행 전에 DerivedData 내부의 모든 것을 삭제를 실행하면

당신은

~/Library/Developer/Xcode/DerivedData/<your-app-name>/Logs/Test/****_TestSummeries.plist 

에서 그것을 발견 할 것이다. 그런 다음 하나의 TestSummeries.plist 만 찾을 수 있습니다.

그런 다음 plist를 구문 분석하고 plist 파일에서 원하는 데이터를 가져옵니다.

** 자세한 정보가 필요하면 아래에서 자유롭게 의견을 말하십시오.

+0

그래, 결과는 그 파일에 저장되어 있지만, 나는 TestRail으로 테스트 결과를 업데이트하는이 전체 과정을 자동화 할 것이므로 더 효율적인 방법을 찾고 있었고 완벽해야한다. 테스트가 두 번 이상 실행되는 경우 데이터를 수동으로 삭제하지 않아도됩니다. – Khazana