【问题标题】:Different build configurations for test schemes测试方案的不同构建配置
【发布时间】:2016-11-02 03:40:17
【问题描述】:

有没有办法在调试版本中运行单元测试并在发布版本中运行性能测试,而无需手动选择和运行单个方案?

我有一个单元测试和一个性能测试方案。在单元测试方案的测试配置中,我选择了调试构建,而对于性能测试方案,我选择了发布构建。如果我单独运行每个方案,我会分别得到一个调试版本和一个发布版本。

如果我创建另一个运行这两个方案的方案,那么该新方案将有自己的构建配置。如果我为这个新方案设置了调试的构建配置,那么我也会为我的性能测试获得一个调试构建。

【问题讨论】:

    标签: xcode unit-testing xctest xcode8 xcode-scheme


    【解决方案1】:

    可能有一种方法可以实现所需的行为,但它更像是一种 hack。

    我看到的主要问题是该方案的测试操作所需的构建配置。由于构建配置适用于方案中的所有目标,因此您需要找到一种方法来诱使 Xcode 使用 Debug 和 Release 配置构建您的目标。话虽如此,这里的想法是:

    1. 将目标的发布配置导出到 xcconfig 文件(xcodebuild -scheme "schemeName" -showBuildSettings >> release.xcconfig 并确保它仅包含发布设置)
    2. 为构建相同源文件的性能测试创建另一个目标
    3. 将此新目标的调试配置设置为上述发布配置的 xcconfig 文件(这基本上是我们欺骗 Xcode 的部分)
    4. 将原始目标和新创建的目标添加到方案的构建操作中并添加测试包(假设它们位于单独的测试包中)
    5. 为测试操作选择调试构建配置。

    如果您测试您的方案,它现在应该在调试和发布中构建源代码,并且应该在调试构建配置上运行单元测试并在发布配置上运行性能测试。

    设置有点脆弱,因为您需要向两个目标添加新的源文件。不过,您应该能够使用 ruby​​ 脚本和 xcodeproj gem 来自动化该过程。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      您可以使用不同的测试包并包含/排除您想要的。

      我的意思是创建您自己的自定义测试目标(捆绑包)并使用 Xcode Test Navigator。

      例如,创建一个MyUnitBundleTests 目标和一个MyPerformanceBundleTests 目标。它们将是两个单独的测试“捆绑包”,您可以在其中选择包含/排除类、方法等。

      Test Navigator 显示项目中包含的测试包和相关的类、方法等的分层列表。

      您可以通过按住Control键单击测试导航器列表中的项目并从快捷菜单中选择启用或禁用来选择性地启用和禁用测试包、类和方法,从而启用或禁用这些项目在方案中。

      Testing with Xcode - Quick Start

      Testing with Xcode - Running Tests and Viewing Results

      还有几种额外的交互式方式来运行测试。 Xcode 根据方案中包含和启用的测试目标运行测试。测试导航器允许您直接控制在方案中包含、启用或禁用哪些测试目标、类和方法无需使用方案编辑器。

      不确定这是否是您想要的,但这是我能想到的唯一不使用方案编辑器进行测试的选项。

      【讨论】:

      • 我不确定我是否理解这有什么帮助。我目前有 2 个目标 - 一个用于性能,一个用于测试。我可以运行任何一个,但我不能同时运行。测试导航器将未选择的目标显示为灰色,我必须手动切换到它才能运行它。
      • 嗨。当你说without manually selecting and running individual schemes 时,我以为你指的是方案编辑器。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 2016-05-07
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      相关资源
      最近更新 更多