【问题标题】:XCTest: How do I prevent Xcode from needlessly recompiling my project if I'm only making changes to my test TargetXCTest:如果我只是对测试目标进行更改,如何防止 Xcode 不必要地重新编译我的项目
【发布时间】:2019-09-25 15:00:48
【问题描述】:

就源文件的数量和代码行而言,我的 Xcode 项目非常庞大。 当我只更改 XCTest 代码并在单个测试、单个测试文件甚至整个测试套件上运行时,Xcode 首先重新编译我的主机应用程序,即使主机应用程序中没有任何文件发生更改.每次我对任何测试文件进行任何更改时都会这样做。

这对编写测试提出了效率挑战,因为测试代码中的小调整需要很长时间才能重新运行和重新验证。 (每次运行超过 3 分钟 - 是的,这是一个很大的项目,我们已经采取了许多措施来减少构建时间,通过检查构建日志等......)

在 Swift 4.2 中使用 Xcode 10.3

测试正在使用:

@testable import MyModuleName

如果我只更改了测试,有没有办法阻止 Xcode 重新构建整个项目?

【问题讨论】:

    标签: xcode xctest


    【解决方案1】:

    我发现了问题。

    我们在项目的构建阶段部分下有一些自定义脚本,它们实际上更改了代码库中的一些可编译资产。我们还有一个 Carthage 依赖复制阶段。

    从构建阶段注释掉这两个阶段可以使整个项目在仅更改测试时不会重新编译。这些脚本实际上是对可编译代码进行更改,使 XCode 强制重新编译。

    故事的寓意:检查您的构建阶段是否有任何可能修改您的源代码的步骤,包括可能是目标一部分的资源文件。将来我们将尝试以更自动化的方式执行此操作,而无需注释掉这些构建步骤。

    【讨论】:

    • 对于运行脚本的构建阶段,出于这个原因,我们必须显式添加输入/输出文件或文件列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    相关资源
    最近更新 更多