我遇到了一個問題,我想確認我正在以正確的方式做事。Xcode單元測試 - 從應用程序的包中訪問資源?
我可以用我的SenTestingKit測試測試簡單的東西,而且工作正常。我建立了一個單元測試包,並將其設置爲主應用程序目標的依賴關係。無論何時按下cmd + B,它都會成功運行所有測試。
這是我遇到的問題。我有一些XML文件需要作爲應用程序的一部分從資源文件夾加載。作爲一個好的單元測試人員,我想寫一些單元測試,以確保它們正確加載。
所以我有一些代碼,看起來像這樣:
NSString *filePath = [[NSBundle mainBundle]
pathForResource:@"foo" ofType:@"xml"];
這工作,當應用程序運行,但一個單元測試過程中,mainBundle
指向錯誤的包,所以這行代碼返回零。
因此,我改變它利用一個已知的類是這樣的:
NSString *filePath = [[NSBundle bundleForClass:[Config class]]
pathForResource:@"foo" ofType:@"xml"];
這也不起作用,因爲爲了進行測試,甚至編譯這樣的代碼,它Config
需要將一部分的單元測試目標。如果我補充一點,那麼該類的包就變成了單元測試包。 (呃!)
我接近這個錯誤的方式嗎?
嘗試構建它,然後運行測試。我在上面看到了一個iTunes U視頻,他們說如果測試目標沒有正確設置,它會在運行時測試上一個版本,而不是構建然後運行測試。 您是否檢查過以確保不是這種情況? – Tacoman667 2010-05-05 17:51:24
嘗試構建單元測試項目?部分單元測試包是運行腳本,所以我將它設置爲應用程序目標的依賴項。 CMD + B應該始終運行測試。 – 2010-05-05 17:53:19