测试在xcode 8 TEST_HOST错误下停止工作

Jak*_*kub 37 xcode ios xcode8

我想在Xcode 8下开始测试,但一开始就失败了.我的错误是:

无法确定MyProjectTest的TEST_HOST的包标识符:"/ Users/jakubmazur/Library/Develorator/Xcode/DelivedData/MyProject-ejeepybggxvekxajlyngopeahiex/Build/Intermediates/CodeCoverage/Products/Testing -iphonesimulator/MyProject.app"

知道这里有什么问题吗?我试着清理项目 - 没什么.在Build Settings我的目标中,Packaging我更改产品包标识符取决于我的架构中的配置.它可能与此有关,但不确定.

- 编辑

好的,如何缩小问题范围.当我在方案中更改设置以使用构建配置Debug而不是Testing似乎工作,但我需要单独的配置进行测试.

mas*_*sty 48

出于某种原因,下图中的"主机应用程序"设置对我来说是个问题.选择适当的目标固定这个.

这最终修改了我的xcodeproj中的以下值:

  • BUNDLE_LOADER ="$(TEST_HOST)";
  • TEST_HOST ="$(BUILT_PRODUCTS_DIR)/myappname.app/myappname";


Den*_*ess 13

还有一个案例可能会遇到.如果您需要主目标的不同产品名称(例如Debug,Staging,Production) - 并尝试使用Xcode Host Application选择器,它将向TEST_HOST构建设置写入不正确的值.

虽然您看到的错误消息是关于Debug配置中的包标识符,但Xcode实际上在Release配置中抱怨TEST_HOST .

我通过手动更改TEST_HOST构建设置来修复它.例如,如果主要目标上的ProductName在Debug配置中设置为AppDebug,在Release配置中设置为AppRelease,则TEST_HOST应该如下:

Xcode设置的内容:

$(BUILT_PRODUCTS_DIR)/AppDebug.app/AppDebug
Run Code Online (Sandbox Code Playgroud)

你需要设置什么:

Debug configuration: $(BUILT_PRODUCTS_DIR)/AppDebug.app/AppDebug
Release configuration: $(BUILT_PRODUCTS_DIR)/AppRelease.app/AppRelease
Run Code Online (Sandbox Code Playgroud)


Jak*_*kub 9

好吧弄清楚.命名包有问题.不幸的是,Xcode存在一些问题.我正在为不同的配置使用不同的模块名称.因此,请转到Project- > Build Settings- > Product Module Name在所有配置中更改名称,不要使用空格.


mev*_*dev 9

我的项目有很多目标,因此我必须将测试目标的主机应用程序设置为"无".(Xcode 9.2)

在此输入图像描述


Sur*_* TR 5

在测试目标>>构建设置>>测试>>测试主机下,您可以看到应用于测试的.app文件。

对我来说**.app文件名是错误的。我将其替换为**/Build/Intermediates/CodeCoverage/Products/Debug-iphonesimulator/**.app(检查此目录下是否存在 .app 文件)。

  • 我刚刚完全删除了“测试主机”,它适用于我的测试目标并且有效。我这样做是为了一个框架,我不确定这是否会改变事情。 (2认同)

Nic*_*ari 5

我也有一个包含多个方案的项目,每个方案都使用单独的配置(Debug、AdHoc 等)和单独的产品名称(MyApp、MyApp_Dev、MyApp_Staging 等)构建应用程序。

值得庆幸的是,它们都具有相同的模块名称,因此我的单元测试源文件可以简单地使用@testable import MyApp,而不管活动方案如何)。

为了克服这个错误,我只需要确保对于我想要测试的应用程序目标的每个方案,以下两个匹配:

  1. 应用目标构建设置>产品名称为构建配置(.eg,‘调试’),
  2. 相同构建配置的测试目标构建设置 > 测试主机(之后的部分$(BUILT_PRODUCTS_DIR)...

因此,如果 #1 是(例如):

MyApp-Debug
Run Code Online (Sandbox Code Playgroud)

,那么#2 必须是:

$(BUILT_PRODUCTS_DIR)/MyApp-Debug.app/MyApp-Debug
Run Code Online (Sandbox Code Playgroud)

在我的例子中,我的方案是AdHoc使用以-DEV(development)后缀结尾的产品名称构建配置,但测试目标正在寻找一个以-STG(staging)后缀结尾的主机。