我想在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中的以下值:
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)
好吧弄清楚.命名包有问题.不幸的是,Xcode存在一些问题.我正在为不同的配置使用不同的模块名称.因此,请转到Project
- > Build Settings
- > Product Module Name
在所有配置中更改名称,不要使用空格.
在测试目标>>构建设置>>测试>>测试主机下,您可以看到应用于测试的.app文件。
对我来说**.app文件名是错误的。我将其替换为**/Build/Intermediates/CodeCoverage/Products/Debug-iphonesimulator/**.app(检查此目录下是否存在 .app 文件)。
我也有一个包含多个方案的项目,每个方案都使用单独的配置(Debug、AdHoc 等)和单独的产品名称(MyApp、MyApp_Dev、MyApp_Staging 等)构建应用程序。
值得庆幸的是,它们都具有相同的模块名称,因此我的单元测试源文件可以简单地使用@testable import MyApp
,而不管活动方案如何)。
为了克服这个错误,我只需要确保对于我想要测试的应用程序目标的每个方案,以下两个匹配:
$(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)后缀结尾的主机。