0
我們的應用程序從我們的ApplicationConfig.plist文件中指定的服務中檢索內容。我需要4個XCTestCases來使用四個不同的ApplicationConfig.plist文件。什麼是最好的方式來設置?如何在XCTests之間更改ApplicationConfig.plists
因爲這些測試是性能測試,所以一旦測試啓動後我不能更改服務,所以我需要在第一次啓動之前設置服務(通過配置文件)。
我們的應用程序從我們的ApplicationConfig.plist文件中指定的服務中檢索內容。我需要4個XCTestCases來使用四個不同的ApplicationConfig.plist文件。什麼是最好的方式來設置?如何在XCTests之間更改ApplicationConfig.plists
因爲這些測試是性能測試,所以一旦測試啓動後我不能更改服務,所以我需要在第一次啓動之前設置服務(通過配置文件)。
// 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
}
launchAppWithPlist("YourPlistFileName")
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];
從那裏,你可以使用(測試)捆綁,以獲得plist裏面
你需要陳ge應用程序支持從不同來源獲取其配置。然後你的測試用例可以指定配置源。一個簡單的解決方案就是讓你通過字典對象傳遞它的方法,這正是plist所做的。 – Michael
由於micheal說你可以創建一個字典並使用它。如果你不想傳遞字典並想從plist文件讀取,那麼將該字典寫入plist文件。 –