2017-12-19 16 views
1

各テストケースがXcodeのテストスイートで実行された後、テストステータスが必要です。私は観察者がそれを達成するのを助けることができることを知っています。しかし、私はどのように私のテストでそれを使用するのですか?Xcode UIテストで実行された各テストケースの結果を取得

+0

詳細をご記入ください。あなたがこれまでに試したことに言及するのを忘れないでください。なぜなら、利他主義者がより効率的な方法であなたを助けることができるからです。 –

+0

もしあなたがこれを必要としている理由**またはあなたのユースケースが何であるかは、単体テストは通常​​単体で行われます。 –

+0

SwiftまたはObjective-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)") 
    } 
} 

...どのように見えるかの簡単な例を示します上記の例を提供したこの関数は、テストケースの1つが失敗したときに呼び出されるため、テストケースクラス内から何かを行う必要はありません。

希望すると便利です。

+0

大変ありがとうございます、これは非常に役に立ちました:) – Khazana

+0

@Khazana解決策として私の答えを受け入れる気になりますか? :) – atgrubb

0

実行された各テストケースの結果は、*** TestSummeries.plistというファイルに保存されます。

あなたは、あなたのテストを何度も実行すると実行直前DerivedData内部のすべてを削除

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

の下でそれを見つけるでしょう。 TestSummeries.plistは1つしか見つかりません。

次に、plistを解析し、plistファイルから目的のデータを取得します。

**詳しい情報が必要な場合は、下にコメントしてください。

+0

ええ、結果はそのファイルに保存されていますが、テスト結果をTestRailに更新するこのプロセス全体を自動化するため、より効率的な方法を探していました。シームレスにする必要があります。テストが複数回実行される場合、手動でデータを削除する必要はありません。 – Khazana

関連する問題