Xcode 8 Beta-转换为当前的Swift语法失败:找不到测试主机


115

当我尝试使用Xcode 8的转换向导时,我收到一条错误消息。尝试重新启动,下载新代码并删除我的DerivedData文件后,我无法幸免此错误:

转换为当前的Swift语法失败:找不到测试主机

我尝试了两个选项:Swift 2.3和Swift3。选择一个版本后,我立即收到该错误。

这是错误的屏幕截图:

Xcode 8转换错误消息


我在这里有同样的问题。另一个较小的项目可以很好地转换。
贡多米尔

我不确定是什么原因造成的。它使我可以选择要转换的模块。所有模块产生相同的错误。
thejuki

什么是“测试主机”?它显示文件DerivedData / ding / Build / Products / Debug-iphoneos / ding.app / ding在删除DerivedData文件夹之后不存在。
贡多米尔

您还可以在Build设置上检查Swift语言版本。尝试使用它的较低版本。
iPhoneDeveloper

Answers:


306

这对我有用:

  1. 在左侧浏览器中选择Xcode项目。
  2. 在“项目” General选项卡中单击测试目标。
  3. 披露“测试”。在我的项目中,“主机应用程序”下拉按钮为空白。选择适当的主机应用程序。
  4. 现在尝试建立您的测试目标。如果成功,那么转换语法也应该如此。

在安装Xcode 8 beta之后,我遇到了这个问题,所以我认为这是相关的。

图片来源@karthikkck 在此处输入图片说明


5
那对我有用。谢谢!为了澄清:单击并在“常规”选项卡标题左侧的选择器上选择测试目标。
thejuki

5
谢谢,也为我工作。在这里注意到一个疯狂的细节,它也可能对其他人有帮助:“主机应用程序”字段已经填充了正确的值,但是只要将其切换回原来的值就可以使用。
mz2

5
为了我的主机应用程序被设置为“自定义”,这是值得的。更改为唯一可用的选项解决了该问题。谢谢!
Mark McCorkle

1
在哪里可以找到步骤3中提到的那个?@Bharathi
JayVDiyk

2
我的常规标签中没有测试部分??
Deuce bigalow

62

找到iluvcapra否则会很有帮助的答案中提到的“主机应用程序”下拉列表,这花了我一些时间。

这就是他的意思:

在这里可以找到下拉菜单。选择您的主要目标。

在这里可以找到下拉菜单


22

我发现可以轻松解决此问题,只需编辑您的Scheme并禁用测试即可。

在此处输入图片说明

并再次运行转换。


1
谢谢!这对我有用,而被接受的答案却没有。
daver

这个。即使我已经正确设置了“主机应用程序”,它也无法正常工作。我也无法运行测试(得到相同的错误消息...)。该项目目前未积极使用单元测试,但必须在某个时候进行研究……
Nicolas Miari

5

+1 iluvcapra

或者,使用文本编辑器从MyAppSwift.xcodeproj / project.pbxproj文件中删除以下两项,搜索TEST_HOST

现在,重新打开您的项目,然后再次运行转换向导。

    4EFFFAE51B53D5D8003CD25A /* Debug */ = {
        isa = XCBuildConfiguration;
        buildSettings = {
            BUNDLE_LOADER = "$(TEST_HOST)";
            FRAMEWORK_SEARCH_PATHS = (
                "$(SDKROOT)/Developer/Library/Frameworks",
                "$(inherited)",
            );
            GCC_PREPROCESSOR_DEFINITIONS = (
                "DEBUG=1",
                "$(inherited)",
            );
            INFOPLIST_FILE = "AF SwiftTests/Info.plist";
            LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
            PRODUCT_NAME = "FA SwiftTests";
            TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AF Swift.app/AF Swift";
        };
        name = Debug;
    };
    4EFFFAE61B53D5D8003CD25A /* Release */ = {
        isa = XCBuildConfiguration;
        buildSettings = {
            BUNDLE_LOADER = "$(TEST_HOST)";
            FRAMEWORK_SEARCH_PATHS = (
                "$(SDKROOT)/Developer/Library/Frameworks",
                "$(inherited)",
            );
            INFOPLIST_FILE = "AF SwiftTests/Info.plist";
            LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
            PRODUCT_NAME = "FA SwiftTests";
            TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AF Swift.app/AF Swift";
        };
        name = Release;
    };

5

在此处输入图片说明

请尝试以下步骤:

  1. 在Xcode的左侧选择您的项目。
  2. 转到目标并选择您的项目测试。
  3. 选择常规选项卡,然后选择主机应用程序下拉菜单,然后选择您的主机应用程序。
  4. 转换或运行您的项目。

尝试这些步骤对我有用。


0

就我而言,我删除了测试目标,然后使用下面的目标+并选择了“ iOs单元测试套件”来重新添加它

由于某种原因,这会导致编译错误,因此我将测试目标的“按配置的中间生成文件路径:”更改为$(PROJECT_TEMP_DIR)/ $(CONFIGURATION)进行调试和发布。这使编译工作正常进行。


-1

只需3个步骤即可解决此问题:

  1. 首先删除您的测试目标
  2. 选择编辑->转换-​​>转换为当前的Swift语法...并执行转换
  3. 然后添加一个新的测试目标
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.