Ktoś próbował włączyć próbne dane z nowymi testami Xcode 7 UI?Jak pozorować dane w UITest na Xcode 7?
- Czy używałeś konkretnej struktury?
- W jaki sposób zarządzałeś celami?
Ktoś próbował włączyć próbne dane z nowymi testami Xcode 7 UI?Jak pozorować dane w UITest na Xcode 7?
Myślę, że istnieje wiele sposobów podejścia do tego - trudność polega na tym, że Apple celowo zaprojektowało UITests, aby działały całkowicie niezależnie od testowanej aplikacji. To powiedziawszy, istnieje kilka haczyków, których możesz użyć do koordynowania logiki w aplikacji z logiką w testach, aby podawać fałszywe dane lub w jakikolwiek sposób zmieniać zachowanie aplikacji. Dwa najbardziej użyteczne to: launchEnvironment
i launchArguments
.
w teście - XCUIApplication().launchArguments
odpowiada NSProcessInfo.processInfo().arguments
w kodzie aplikacji
również: XCUIApplication().launchEnvironment
->NSProcessInfo.processInfo().environment
launchEnvironment jest prosta słowniku natomiast uruchomienie argumentów jest tablicą. W swoim badaniu można karmić żadnych wartości chcesz do któregoś z tych parametrów przed uruchomieniem aplikacji:
let app = XCUIApplication()
app.launchEnvironment["-FakedFeedResponse"] = "success.json"
app.launch()
Następnie w logice aplikacji można przełączyć się na tych wartościach jednak lubisz. Coś takiego:
func fetchFeed() -> JSON {
if let fakedJSONFilename = NSProcessInfo.processInfo().environment["-FakedFeedResponse"] {
let fakePayload = fakeDataFileNamed(fakedJSONFilename)
return fakePayload
} else {
//Make network call and return a real JSON payload
}
}
Stosując ten wzór, twoje sfałszowane/fałszywe dane będą musiały być plikami dołączonymi do członków aplikacji.
Dziękujemy! Spędziłem kilka godzin próbując przekazać argumenty do celu aplikacji i to wystarczyło. – rob