Ios xcode中性能测试的分离方案

Ios xcode中性能测试的分离方案,ios,swift,unit-testing,jenkins,xcode-ui-testing,Ios,Swift,Unit Testing,Jenkins,Xcode Ui Testing,在Xcode中创建单独的性能测试方案(类似于单元测试和用户界面测试等方案)是否有任何优势,除了测试代码更为隔离之外?是否值得为一个Xcode项目保留3个测试方案 我想说的是,即使我在同一个单元测试包(scheme)中的self.measure{}块中编写所有性能测试用例,一旦项目增长并在Jenkins中持续集成,它会有什么不同吗 在Xcode中执行性能测试的行业标准是什么?每个人都在同一个单元测试包中进行性能测试吗?为什么和为什么不?首先,请注意方案和目标不是一回事: 指定要生成的产品,并包含从

在Xcode中创建单独的
性能测试方案
(类似于
单元测试
用户界面测试
等方案)是否有任何优势,除了测试代码更为隔离之外?是否值得为一个Xcode项目保留3个测试方案

我想说的是,即使我在同一个单元测试包(scheme)中的
self.measure{}
块中编写所有性能测试用例,一旦项目增长并在Jenkins中持续集成,它会有什么不同吗


在Xcode中执行
性能测试的行业标准是什么?每个人都在同一个单元测试包中进行性能测试吗?为什么和为什么不?

首先,请注意方案目标不是一回事:

指定要生成的产品,并包含从项目或工作区中的一组文件生成产品的说明

正如您所说,当涉及到测试时,一个目标用于对一组测试进行分组,即所谓的测试包。拥有多个测试目标可以让您轻松地只运行所有测试用例的特定子集。因此,在特定测试目标中分离性能测试特别有用,因为这些测试通常需要更多的时间来运行。因此,只运行更快的单元测试是很有用的

定义要构建的目标集合、构建时要使用的配置以及要执行的测试集合

(重点是我的)这里是诀窍,也是你问题的答案:对于性能测试,有一个专门的方案来运行它们特别重要,因为这让你可以用不同的构建配置构建应用程序。你想这样做,因为你想在发布模式下编译你的应用程序,所以你的性能测试是针对优化的构建运行的。

准确地说,对于性能测试,您需要添加一个新的构建配置,该配置与Release类似,但启用了“EnableTestability”构建标志。 此“启用可测试性”是测试链接到应用程序所必需的。因此,在您的项目中,您将有3种构建配置:发布、调试和性能测试

另一方面,对于单元测试,您希望在调试模式下编译应用程序,因此可以设置断点来调试失败的测试

还要注意的是,由于您要在方案中添加自定义配置,所以最好将它们共享,这样每个参与项目的人都有相同的配置


你可以从中看到所有这些都在起作用。更具体地说,这是在

中实现的。首先,请注意,计划目标不是一回事:

指定要生成的产品,并包含从项目或工作区中的一组文件生成产品的说明

正如您所说,当涉及到测试时,一个目标用于对一组测试进行分组,即所谓的测试包。拥有多个测试目标可以让您轻松地只运行所有测试用例的特定子集。因此,在特定测试目标中分离性能测试特别有用,因为这些测试通常需要更多的时间来运行。因此,只运行更快的单元测试是很有用的

定义要构建的目标集合、构建时要使用的配置以及要执行的测试集合

(重点是我的)这里是诀窍,也是你问题的答案:对于性能测试,有一个专门的方案来运行它们特别重要,因为这让你可以用不同的构建配置构建应用程序。你想这样做,因为你想在发布模式下编译你的应用程序,所以你的性能测试是针对优化的构建运行的。

准确地说,对于性能测试,您需要添加一个新的构建配置,该配置与Release类似,但启用了“EnableTestability”构建标志。 此“启用可测试性”是测试链接到应用程序所必需的。因此,在您的项目中,您将有3种构建配置:发布、调试和性能测试

另一方面,对于单元测试,您希望在调试模式下编译应用程序,因此可以设置断点来调试失败的测试

还要注意的是,由于您要在方案中添加自定义配置,所以最好将它们共享,这样每个参与项目的人都有相同的配置

你可以从中看到所有这些都在起作用。更具体地说,这是在2002年实施的