2017-02-16 5 views
0

私のアプリケーションは現在、永続性としてコアデータを使用しており、一部のモックデータでUIテストを行いたいとします。現在、開発中に以前に保存されたデータを使用してUIテストを実行しています。理想的には、私はより多くのUIテストを書くことを可能にするためにいくつかの模擬データをMOCに挿入したいと思います。私の単体テストでは、JSONファイルのデータをsetup関数の管理オブジェクトコンテキストに挿入しています。これがUIテストで可能かどうかを知りたいですか?UIテストのコアデータに模擬データを挿入してください

私はこれをオンラインで調べようとしましたが、私はちょうど今混乱している人々から非常に多くの異なる答えを読んでいます。これが不可能な場合は、コアデータを使用したUIテストのベストプラクティスをお勧めしますか?

答えて

1

UITestクラスがあなたのアプリケーションのコードにアクセスできないため、UITestクラス内にモックアップデータを作成することはできません。

Apple's Docsより:

UIテストは、基本的な方法で、ユニットテストとは異なります。ユニットテスト を使用すると、アプリのスコープ内で作業することができ、 の機能とメソッドをアプリの変数に完全にアクセスし、 の状態にすることができます。 UIテストでは、ユーザーのと同じ方法で、アプリの内部メソッド、関数、および 変数にアクセスすることなくアプリのUIを実行します。これにより、ユーザが同じ方法でアプリケーションを見ることができるようになります。ユーザーが遭遇するUIの問題が公開されます( )。

UITestsを実行するときにモックデータを使用する場合は、アプリのコード内にモックデータを作成してから、モックデータがUITestsの実行中に作成されることを確認してください。

次の手順行う必要があり、その動作させるために:あなたのUITestクラスでアプリケーションを起動したときに起動引数を追加)

1:

func testExample() { 
    let app = XCUIApplication() 
    app.launchArguments.append("IS_RUNNING_UITEST") 
    app.launch() 
    // Do your tests 
} 

2)のコードを追加します。あなたのアプリへのモックデータを作成し(例えば、AppDelegate)、起動引数が存在するときにそれを実行します:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    if ProcessInfo.processInfo.arguments.contains("IS_RUNNING_UITEST") { 
     // insert data from a JSON file into the managed object context 
    } 
} 
関連する問題