KIF像魔術一樣工作,最近讓我很困惑。這就是KIF和XCTest的工作原理。如何設置我的應用程序在XCTest下運行時會看到的標誌?
據說WWDC 2014 & 2013:測試代碼作爲一種插件被注入宿主應用程序,那麼什麼信息可以作爲插件從主應用程序中竊聽? 主機應用程序 & 插件是什麼關係?
使用KIF,我們可以感知通知& URL請求,但這是如何工作的?我的第一個想法是主機應用程序中的所有上下文都與插件共享但爲什麼在測試中,我們無法修改主應用程序中的變量?
例如:
,我們有兩個目標:
魔術項目
- MagicApp
- MagicUITest < - KIFTest目標
假設我有一個檔案名爲MagicClass:
class MagicClass {
static var a = 1
}
如果我想在MagicUITest中修改該變量,那麼可能嗎?
我現在面臨的問題是如何注入不同的UIViewController到RootViewController,以便我可以從每個單獨的ViewController運行KIF測試,並且不需要麻煩通過登錄過程所有的時間..我的猜測是東西像:
在MagicApp:
class AppDelegate : .. , .. {
func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
if MagicClass.a == 1 {
window.rootViewController = AViewController()
} else {
window.rootViewController = BViewController()
}
}
}
在KIFTest的設定()
:
setUp() {
Magic.a = 2
}
但不會工作。
一件事是Magic.a = 2不會改變在MagicApp的Magic.a,第二是應用(..,..,..)功能設置()被調用之前將結束..
有什麼想法?
謝謝!我會試試看。我們希望讓應用程序行爲不同的情況主要與模擬網絡響應有關。例如,將自定義的NSURLProtocol註冊到NSURLSession的protocolsArray。 – 2015-04-13 20:29:34