2015-08-03 21 views
7

Mam aplikację, która wykorzystuje dane podstawowe. Zachowanie aplikacji różni się w zależności od tego, czy dane zostały jeszcze wypełnione.Jak zacząć od pustych danych podstawowych dla każdej asercji testowej interfejsu użytkownika w Swift?

Miałem nadzieję, że przed każdym przypadkiem testowym dane podstawowe zostaną opróżnione, dzięki czemu każdy przypadek testowy zostanie uruchomiony na nowej instancji aplikacji. Przypadki testowe nie powinny zależeć od stanu urządzenia testowego, zwłaszcza, że ​​inne przypadki testowe manipulują tym stanem. Niestety, domyślnie dane podstawowe pozostają nie tylko pomiędzy przypadkami testowymi, ale także między całkowicie osobnymi przebiegami testowymi. Próbuję naprawić to zachowanie.

Moim pierwszym pomysłem było zrzucenie wszystkich podstawowych danych w funkcji rozłączenia. W ten sposób każdy test oczyści się sam. Niestety, nie jestem w stanie uzyskać NSManagedObjectContext z tym poleceniem:

let context = (UIApplication.sharedApplication().delegate as! MyApp.AppDelegate).managedObjectContext! 

Ponieważ ma to błąd kompilatora:

Undefined symbols for architecture x86_64: "type metadata accessor for MyApp.AppDelegate", referenced from: MyAppUITests.MyAppUITests.tearDown 

Aby naprawić ten błąd, próbowałem zarówno dodanie UITests do członkostwa docelowej AppDelegate i robienie @testable import MyApp. Żaden nie zadziałał. Potrzebuję managedObjectContext do opróżnienia podstawowych danych.

Teraz myślę, że musi istnieć lepszy, wbudowany sposób, aby zrzucić wszystkie podstawowe dane na początku lub na końcu każdego uruchomienia testu. Byłoby najlepiej na końcu, ponieważ każdy test powinien sam się posprzątać. Czy ktoś wie, jak można to zrobić?

Z góry dziękuję!

Odpowiedz

2

Można to łatwo zrobić za pomocą XCUIApplication().launchEnvironment = ["key":"val"]

i sprawdzanie jeśli AppDelegate i analizowania NSProcessInfo.

Walczę o informacje z aplikacji do instrukcji testowania/wysyłania nie tylko podczas uruchamiania.