2016-10-04 1 views
0

Unsere App ruft Inhalte von einem Dienst ab, der in unserer Datei ApplicationConfig.plist angegeben ist. Ich brauche 4 XCTestCases, um vier verschiedene ApplicationConfig.plist-Dateien zu verwenden. Was ist der beste Weg, das einzurichten?Wie kann ich ApplicationConfig.plists zwischen XCTests ändern

Da es sich bei diesen Tests um Leistungstests handelt, kann ich die Dienste nach dem Start der Tests nicht ändern. Daher müssen die Dienste vor dem ersten Start über die Konfigurationsdatei eingerichtet werden.

+1

Sie müssen chan Sie können Ihre App so unterstützen, dass sie ihre Konfiguration aus einer anderen Quelle bezieht. Dann können Ihre Testfälle die Konfigurationsquelle angeben. Eine einfache Lösung wäre eine Methode, mit der man sie durch ein Dictionary-Objekt weiterleitet, was die plist sowieso tut. – Michael

+1

Wie Micheal sagte, können Sie ein Wörterbuch erstellen und verwenden. Wenn Sie kein Wörterbuch weitergeben wollen und aus der PLIST-Datei lesen möchten, schreiben Sie dieses Wörterbuch in die PLIST-Datei. –

Antwort

0

Swift Helfer Testcode

// You will need to get the bundle path of the test app to pass to the main app 
func getBundlePath() -> String 
{ 
    let bundle = Bundle.main 
    let bundlePath = bundle.builtInPlugInsPath! + "/" + ((bundle.infoDictionary?["CFBundleName"])! as! String) + ".xctest" 
    return bundlePath 
} 

// Launch the app and pass it the path to the test app and the name of the plist you want to use 
func launchAppWithPlist(_ plistName: String) -> XCUIApplication 
{ 
    // Launch the app between tests 
    let app = XCUIApplication() 
    app.launchEnvironment = ["use_custom_plist" : plistName, "path_to_test_app" : getBundlePath()] 
    app.launch() 

    return app 
} 

Swift Test

launchAppWithPlist("YourPlistFileName") 

ApplicationDelegate (Objective C)

static NSString* const kCustomAppConfigKey = @"use_custom_plist"; 
static NSString* const kPathToTestAppKey = @"path_to_test_app"; 

NSDictionary *environment = [[NSProcessInfo processInfo] environment]; 
NSString *pathToConfigFile = [environment[kCustomAppConfigKey] lastPathComponent]; 
NSString *pathToTestBundle = [[[environment[kPathToTestAppKey] pathComponents] valueForKey:@"description"] componentsJoinedByString:@"/"]; 
NSBundle *bundle = [NSBundle bundleWithPath:pathToTestBundle]; 

Von dort können Sie den (Test) verwenden bündeln die bekommen plist innerhalb

Verwandte Themen