10

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

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

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

4

2 回答 2

1

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

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

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

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

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

使用 Xcode 进行测试 - 快速入门

使用 Xcode 进行测试 - 运行测试和查看结果

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

在此处输入图像描述

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

于 2016-07-09T04:44:01.623 回答
1

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

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

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

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

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

希望有帮助。

于 2016-07-10T10:27:04.280 回答