2014-07-08 191 views
17

有誰知道如何對應用程序擴展目標執行單元測試,特別是鍵盤擴展目標?如何在Xcode 6上測試應用程序擴展如何在Xcode 6上測試應用程序擴展

有什麼我想(在單元測試目標):

  • 在「常規」抽頭,設置它的目標擴張對象,而不是容器的應用程序。
  • 將「捆綁裝載機」擴張對象的二進制文件,它看起來像$(BUILT_PRODUCTS_DIR)/com.mycompany.keyboard.appex/com.mycompany.keyboard
  • 將「測試主機」來$(BUNDLE_LOADER)的路徑。
  • 在「構建階段」點擊,將「目標依賴項」設置爲容器應用程序和擴展。

完成這些工作後,我可以成功構建它,但總是會出現「測試失敗」,並顯示日誌Test target SogouInputTests encountered an error (Test session exited(1). without checking in. If you believe this error represents a bug, please attach the log file at /tmp/TestStatus-UXfvxw.log)

我正在使用Xcode 6 beta 3.

+2

對於它的價值,我在沒有擴展名的應用程序中運行命令行上的相同錯誤測試 – Cameron

+2

您是否解決了這個問題?我有同樣的問題... – vinnybad

回答

12

我已經向Apple報告了該錯誤。可悲的是,答案是現在鍵盤擴展不支持單元測試。答案來自於蘋果:

  • 它目前不支持運行單元測試的應用程序擴展中
  • 相反,考慮您想考一個框架的代碼和測試那裏的代碼
  • 鏈接框架到你的擴展
1

剛剛遇到類似的問題,試圖單元測試擴展。獨立完成了作者嘗試使用Bundle Loader指向.appx路徑的同樣事情,當然沒有成功。 我真的不喜歡爲測試創建一個單獨的框架的想法,所以我最終將可測試源添加到擴展測試目標中。如果你沒有在你的擴展太多的源文件,這是非常簡單的:

  1. 在項目設置中選擇您的擴展測試目標
  2. 前往構建階段
  3. 展開編譯源代碼
  4. 點擊+
  5. 使用可測試代碼添加源文件。
  6. 建立測試

爲什麼它的工作原理:

一旦你添加擴展源到您的擴展測試目標,Xcode是要他們每個人的兩倍參考,並同時在普通分機構建編譯和測試版本從而消除了鏈接問題。

有什麼缺點嗎?

您將不得不手動同步擴展測試目標中的源文件列表。無論何時添加/刪除擴展目標中的文件,都可能需要在其測試目標中執行相同的操作。

相關問題