私は snapshot
を使用して、App Storeに提出しようとしているアプリのスクリーンショットを作成しています。ファストレーンスナップショットでUserDefaultsを読むのが難しい
ほとんどの場合、「広告として」動作しますが、私のアプリケーション内のUserDefaults
にアクセスするのは好きではないようです。 1つのテストでは、終了ステータス:65が生成されます。
UI Testing Failure - com.me.MyApp crashed in (extension in MyApp):__ObjC.NSObject.defaultTime() -> Swift.Float
私は、構文エラーのための招待にUserDefaults.standard.value(forKey: "defaultTime")
を見つけたので、私はUserDefaults
にアクセスするための拡張機能を作成しました。私はdefaultTime
を必要とする時はいつでも、私はちょうどdefaultTime()
を入力し、アプリWihin
class CustomExtensions: NSObject {
/*
This is blank. Nothing else in here. No really...nothing else
*/
}
extension NSObject {
// User Defaults
func defaultTime() -> Float {
return UserDefaults.standard.value(forKey: "defaultTime") as! Float
}
// a bunch of other UserDefaults
}
:ここでは拡張子は次のようになります。このメソッドを使用してUserDefaults
の値にアクセスすると、シミュレータとテストしたデバイスで正常に動作します。私はsnapshot
の問題に遭遇します。
テスト中にsleep(1)
で追加しようとしましたが、何もしないようです。私は提案を再度歓迎します:UserDefaults
にアクセスするための代替手段は、MyApp全体に容易にアクセスできるようにすることです。
素晴らしいを!私は 'nil coalescing operator'sについてはhttps://www.hackingwithswift.com/read/12/2/reading-and-writing-basics-userdefaultsを読んでいました。それでこの問題は解決しました。私は右のセルをクリックするようにテストを調整しなければなりません...少し楽になります:)ありがとう! – Adrian
私の初期のデフォルトは 'AppDelegate.swift'で設定されています。あなたの解決策が私の問題を解決したことは、UIテストがAppDelegateをスキップすることを示しています。私はそれを推測したことはありませんでした。うまくいけば、このコメントの誰かがさらに下にコメントしてください。 – Adrian