2014-07-08 145 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是要他们每个人的两倍参考,并同时在普通分机构建编译和测试版本从而消除了链接问题。

有什么缺点吗?

您将不得不手动同步扩展测试目标中的源文件列表。无论何时添加/删除扩展目标中的文件,都可能需要在其测试目标中执行相同的操作。

相关问题