5

現在の画面要素 (ラベル、画像、ボタン) のスナップショットを作成し、アクセシビリティ情報を json ファイルに保存することで、Xcode 7 の新しい UI テスト機能を拡張しようとしています。

後で UI テストを実行するときに、現在の画面のスナップショットを取得して既存のものと比較し、追加の要素または欠落している要素が見つかった場合、テストは失敗するという考え方です。

残念ながら、正しいターゲットを使用しても、UI テスト中にアプリのリソースを利用できないように見えるため、比較のために json ファイルを読み込むことができません。次の標準コードは、リソースの読み込みに失敗します。

guard let resourcePath = NSBundle.mainBundle ().pathForResource ("StartScreenShapshot", ofType:"json") else {
        XCTFail ("can't load resource StartScreenShapshot")
        return
    }

UIテストは画面上で何が起こっているかに基づいている必要があり、アプリの動作へのアクセスは必要ないはずですが、リソースバンドルへのアクセスがないことは苦痛であるため、Appleがこのサンドボックスアプローチを採用した理由を理解できます.

Xcode 7 UI テスト中に、アプリからローカル リソースをロードする方法、または他の方法でローカルにロードする方法はありますか?

ファイルをローカルに(自動的に)保存することも大きなプラスになり、手動で作成する必要がなくなります。

4

2 に答える 2

6

@sage444 に感謝

単体テストでは、リソース パスの取得に mainBundle() メソッドは機能しませんが、クラスを使用すると機能します。

 guard let resourcePath = NSBundle (forClass: self.dynamicType).pathForResource (contentName, ofType:"json") else {
        XCTFail ("can't load resource \(contentName)")
        return
    }
于 2015-09-11T14:02:56.250 に答える