已删除的测试在 Xcode 测试导航器中持续存在

Posted

技术标签:

【中文标题】已删除的测试在 Xcode 测试导航器中持续存在【英文标题】:Deleted tests persist in Xcode test navigator 【发布时间】:2016-04-19 21:10:20 【问题描述】:

我最近从我的项目中删除了一些旧的测试类并删除了文件。正如预期的那样,文件被移到垃圾箱并在 git 中显示为已删除。

不幸的是,测试类和它们定义的测试用例继续出现在测试导航器中。我已经尝试过常见的问题,例如清理和重建,以及退出和重新打开 Xcode。

其余测试运行良好;在所有测试运行结束时,导航器会显示没有指示状态的虚拟测试。

我开始认为项目文件中存在一些错误状态,导致这些幻像测试用例一直存在,但我对内部结构了解不足,无法进一步调试。

我的问题与here 描述的场景不同,因为我的所有测试用例都停留在测试导航器中,而不是全部消失。

【问题讨论】:

【参考方案1】:

删除 DerivedData 目录。显然 Xcode 会解析测试类并将某种测试定义文件写入 DerivedData。然后它使用这些定义文件来填充测试导航器。

不幸的是,从 Xcode 中删除测试类不会导致缓存失效并重建。相反,必须手动清除缓存。

我错误地认为测试定义存储在内存中,这就是为什么我希望退出 Xcode 可以解决问题。

【讨论】:

【参考方案2】:

我发现我必须按顺序执行以下步骤,否则删除的测试会重新出现:

    关闭项目(但不要退出 Xcode)。 窗口 > 项目 > 选择项目。 点击“派生数据”旁边的“删除”按钮。 退出 Xcode 并重新启动。 等待 Xcode 完成索引。 运行测试。

【讨论】:

以上是关于已删除的测试在 Xcode 测试导航器中持续存在的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 测试命令已禁用

Xcode 9.4 未显示单元测试

在 Xcode UI 测试中验证 iOS 是不是已从正在运行的应用程序导航到另一个应用程序

Xcode测试未出现在测试导航器中[关闭]

Xcode 6.1 直到运行时才检测单元测试

删除 XCode 8 中的单元测试