iOS AppDelegate 单元测试
iOS Unit Test on AppDelegate
我是 iOS 开发的新手。我想创建一个功能,当应用程序首次启动时,它可以根据系统语言切换应用程序语言。如何创建单元测试来测试该功能?
这是我在 AppDelegate.swift 中的代码,我想测试 "setLang" 函数:
测试用例应该是:
setLang("en", 设置)
预期结果:setting.string(forKey:"lang") == "en"
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
applySetting()
return true
}
func applySetting(){
setLang(SysLangCode: Locale.current.languageCode, UserSetting: UserDefaults.standard)
}
func setLang(SysLangCode sysLang:String?, UserSetting setting:UserDefaults){
//Some logic to check sysLang
setting.set(sysLang, forKey:"lang")
}
...
这是我的单元测试,但失败了 "Fatal error: Unexpectedly found nil while unwrapping an Optional value"
class xxx: XCTestCase {
var appDelegate: AppDelegate!
func testSetLang(){
self.appDelegate.setLang(SysLangCode: "en", UserSetting:UserDefaults.standard)
XCTAssert(UserDefaults.standard.string(forKey: "lang") == "en")
}
}
如果您已将单元测试目标添加到您的项目,那么简单的单元测试将如下所示:
func testLanguageCodeCanBeSetInUserDefaults() {
UserDefaults.standard.set(Locale.current.languageCode,
forKey: "lang")
XCTAssertEqual(UserDefaults.standard.string(forKey: "lang"),
Locale.current.languageCode)
}
要将单元测试目标添加到您的项目:
File > New > Target > iOS > iOS Unit Testing Bundle
编辑:(基于您的)
func testAppDelegateCanSetLanguageCodeToUserDefaults() {
let appDelegate = AppDelegate()
appDelegate.setLang(SysLangCode: "en",
UserSetting:UserDefaults.standard)
XCTAssertEqual(UserDefaults.standard.string(forKey: "lang"),
"en")
}
我是 iOS 开发的新手。我想创建一个功能,当应用程序首次启动时,它可以根据系统语言切换应用程序语言。如何创建单元测试来测试该功能?
这是我在 AppDelegate.swift 中的代码,我想测试 "setLang" 函数: 测试用例应该是:
setLang("en", 设置)
预期结果:setting.string(forKey:"lang") == "en"
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
applySetting()
return true
}
func applySetting(){
setLang(SysLangCode: Locale.current.languageCode, UserSetting: UserDefaults.standard)
}
func setLang(SysLangCode sysLang:String?, UserSetting setting:UserDefaults){
//Some logic to check sysLang
setting.set(sysLang, forKey:"lang")
}
...
这是我的单元测试,但失败了 "Fatal error: Unexpectedly found nil while unwrapping an Optional value"
class xxx: XCTestCase {
var appDelegate: AppDelegate!
func testSetLang(){
self.appDelegate.setLang(SysLangCode: "en", UserSetting:UserDefaults.standard)
XCTAssert(UserDefaults.standard.string(forKey: "lang") == "en")
}
}
如果您已将单元测试目标添加到您的项目,那么简单的单元测试将如下所示:
func testLanguageCodeCanBeSetInUserDefaults() {
UserDefaults.standard.set(Locale.current.languageCode,
forKey: "lang")
XCTAssertEqual(UserDefaults.standard.string(forKey: "lang"),
Locale.current.languageCode)
}
要将单元测试目标添加到您的项目:
File > New > Target > iOS > iOS Unit Testing Bundle
编辑:(基于您的)
func testAppDelegateCanSetLanguageCodeToUserDefaults() {
let appDelegate = AppDelegate()
appDelegate.setLang(SysLangCode: "en",
UserSetting:UserDefaults.standard)
XCTAssertEqual(UserDefaults.standard.string(forKey: "lang"),
"en")
}