実際にはwait for app to idle
を無効にすることができます。これはハックであり、安定していない可能性があります。アニメーションを無効にしてこのハックを有効にすると、アニメーションを無効にすることによるパフォーマンス向上の上に、約20%のパフォーマンス向上が見られます。
あなたがしなければならないことは、アプリケーションをアイドル状態にして、それをノーオペレーションするために呼び出されるメソッドをすっきりさせるだけです。その方法はXCUIApplicationProcess waitForQuiescenceIncludingAnimationsIdle:
です。これは私の迅速な解決策3です - より良い方法がありますが、これは概念の証明のために機能します。
XCTestCase
クラスを拡張します。病気コール鉱山MyTestCase
static var swizzledOutIdle = false
override func setUp() {
if !MyTestCase.swizzledOutIdle { // ensure the swizzle only happens once
let original = class_getInstanceMethod(objc_getClass("XCUIApplicationProcess") as! AnyClass, Selector(("waitForQuiescenceIncludingAnimationsIdle:")))
let replaced = class_getInstanceMethod(type(of: self), #selector(MyTestCase.replace))
method_exchangeImplementations(original, replaced)
MyTestCase.swizzledOutIdle = true
}
super.setUp()
}
@objc func replace() {
return
}
注wait for app to idle
は、もはやログに表示されなくなります。誰もがそれを必要とする場合には、私はObjective-Cでgh123man答えを使用
おかげで、これは私が今のところやってしまったものです。完璧ではありませんが、今のところ唯一の方法かもしれません。 app.launch() ' – Jonny
を一回の反復を実行するだけに語ったことができ、それが 'てみましょうアプリは= XCUIApplication() app.launchEnvironment = [ "YES" "UITEST_DISABLE_ANIMATIONS"]でなければなりません魔法のように!さらに、速度のために、このためいくつかのケースでは 'waitForExistence'関数を使用する必要があることに言及することもできます)。 – Jeremy