118

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

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

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

这是错误的屏幕截图:

Xcode 8 转换错误信息

4

7 回答 7

313

这对我有用:

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

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

图片归功于@karthikkck 在此处输入图像描述

于 2016-06-16T16:43:09.300 回答
62

我花了一些时间找到iluvcapra 在其他非常有用的答案中提到的“主机应用程序”下拉菜单。

所以他的意思是:

这是您找到下拉菜单的地方。选择你的主要目标。

这是您找到下拉菜单的地方

于 2016-09-27T20:07:34.963 回答
23

我发现很容易解决这个问题,只需编辑您的方案并禁用测试。

在此处输入图像描述

并再次运行转换。

于 2016-09-20T12:55:39.613 回答
5

+1 伊鲁卡普拉

或者,使用文本编辑器从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;
    };
于 2016-09-17T08:57:32.277 回答
5

在此处输入图像描述

请尝试以下步骤:

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

尝试这些步骤对我有用。

于 2017-09-28T05:20:34.180 回答
0

在我的情况下,我删除了我的测试目标,然后使用下面的目标重新添加它并选择“iOs Unit Testing Bundle”

出于某种原因,这出现了编译错误,因此我将“每个配置的中间构建文件路径:我的测试目标的调试和发布都更改为 $(PROJECT_TEMP_DIR)/$(CONFIGURATION)。这允许编译工作。

于 2017-06-13T10:54:52.750 回答
-1

通过 3 个步骤解决此问题:

  1. 首先删除你的测试目标
  2. 选择 Edit -> Convert -> To current Swift syntax... 并执行转换
  3. 然后添加一个新的测试目标
于 2017-07-26T07:33:20.740 回答