测试方案的不同构建配置

时间:2016-06-30 07:20:37

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

Testing with Xcode - Quick Start

Testing with Xcode - Running Tests and Viewing Results

有几种其他交互式方法可​​以运行测试。 Xcode根据计划中包含和启用的测试目标运行测试。测试导航器允许您直接控制在方案中包含,启用或禁用哪些测试目标,类和方法,而无需使用方案编辑器。

enter image description here

不确定这是否是您想要的,但这是我可以考虑的唯一选择,无需进入方案编辑器进行测试。

答案 1 :(得分:0)

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

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

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

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

    希望有所帮助。