从命令行运行iOS应用程序的单个XCTest(UI,Unit)testing用例

是否可以从命令行界面从iOS应用testing目标(而不是所有testing用例)运行单个testing用例或单个testing套件?

您可以使用xcodebuild从命令行运行testing,开箱即用。 当你这样做时,你运行你select的testing目标中包含的所有testing用例。

您也可以使用Fastlane进行扫描 ,尽pipe我相信您只能运行您select的构buildscheme的所有testing(如上所述),所以与xcodebuild没有区别。

您可以使用Facebook上的xctool运行特定的testing,但不使用xcodebuild,并且仅限于在模拟器上运行,而不是实际的iOStesting设备。

我发现直接运行xctest命令行实用程序的引用,但它似乎是一个未公开的function和目标DerivedData。 UItesting的这一事实很复杂, 它们的* xctest文件在一个单独的XCTRunner包中 。

现在可以使用XCode 8.检查video:

https://developer.apple.com/videos/play/wwdc2016/409/ 在这里输入图像说明

您可以编辑该scheme只运行特定的testing。 selectscheme,然后编辑scheme。 在出现的窗口中,selecttesting阶段并禁用/启用单个testing。

在这里输入图像说明

您也可以添加scheme来运行testing的子集。 从命令行运行testing时,可以指定用于testing的scheme(至less在fastlane中)。

我和你的情况相似,并且已经构build了一个python脚本来触发我想要的一组testing用例。 它有一点细致的过程,但为我工作,一直非常有用的实施DataProvider方法,重新运行失败的testing用例和我需要的其他自定义。

一些相关的步骤,你想实现什么。

  1. 重写XCTestCase中的testInvocations方法来执行以下步骤
    • 在这个方法中,我读取环境variablesXXXX。
    • 这个环境variables基本上是逗号分隔的testing用例方法名称。
    • 现在为每个要触发的testing方法创buildNSInvocations。
    • 返回Invocations数组。
  2. 如何传递环境variables?
    • 在scheme中添加一个名为XXXX的环境variables。
    • Scheme文件是标准的xml文件,编写一个脚本修改scheme文件以在环境variables中包含逗号分隔值。

如果您需要更多的信息添加评论,我会回复它。

要运行单独的testing或testing课程,您可以单击排水沟旁边的钻石。 如果您打开了行号,那么就在行号旁边。

在这个截图中,我的鼠标hover在钻石上。 注意它是如何变成一个小箭头表示它将被运行。

悬停在测试钻石

然后,您可以使用^?⌘G重新执行最近运行的testing。

据我所知这不能通过xcodebuild完成。