To jest mój prosty przypadek testowy:Jak zaimportować mój moduł aplikacji do pliku MyAppUITests?
import XCTest
@testable import MyApp //it doesn't work
z tego powodu:
class TabBarControllerTests: XCTestCase {
override func setUp() {
super.setUp()
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject([], forKey: DBTabBarOrderedIndexesKey) //key is undefined, because of lack of my app module
defaults.synchronize()
continueAfterFailure = false
XCUIApplication().launch()
}
func testIsOrderOfTabsSaved() {
XCUIApplication().tabBars.buttons["Catering"].tap()
//what next?
}
}
Raz dotknij UITabBarItem
zmienić wartość DBAppSettings.mode
, więc tutaj chciałbym mieć dostęp do mojej właściwości DBAppSettings.mode
, aby sprawdzić, czy rzeczywiście została zmieniona.
Zauważyłem, że jest jedna dziwna rzecz, kiedy buduję swoją aplikację i sprawdzam, co zostało zbudowane, tam nie jest kompilacją dla mojego celu UITest. Czy to ważne?
To nie jest dobry pomysł, ponieważ potrzebuję dostępu do mojej aplikacji, a nie do niektórych zajęć. W tym przypadku istnieje prosty przypadek z 'kluczem', ale często potrzebuję dostępu do niektórych singletonów. –
Zazwyczaj umieszczam singletony w ich własnych klasach zewnętrznych względem współużytkowanej instancji aplikacji. Czy to działa w twoim celu? – rholmes
będzie działać, ale obiekty w ramach tych singletonów są kolejnymi obiektami z mojej klasy, więc w zasadzie musiałbym dołączyć do celu testowego każdy plik z mojej aplikacji docelowej :-) nie oczekuje się ... –