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
}
}