从命令行为iOS应用程序运行单独的XCTest(UI,Unit)测试用例

时间:2016-02-03 00:09:15

标签: ios unit-testing xctest xcode-ui-testing

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

您可以使用开箱即用的xcodebuild从命令行运行测试。执行此操作时,您将运行您已选择的测试目标中包含的所有测试用例。

你也可以使用Fastlane的scan来做这件事,虽然我相信你只能运行你选择的构建方案的所有测试(如上所述),所以它不是与xcodebuild不同。

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

我找到了直接运行xctest命令行实用程序的引用,但它似乎是一个未记录的功能,并以DerivedData为目标。 UI测试have their *xctest files in a separate XCTRunner bundle

使事情变得复杂

5 个答案:

答案 0 :(得分:74)

现在可以使用Xcode 8.查看此视频:

https://developer.apple.com/videos/play/wwdc2016/409/

enter image description here

答案 1 :(得分:19)

您可以编辑方案以仅运行特定测试。选择方案,然后编辑方案。在出现的窗口中,选择测试阶段并禁用/启用单个测试。

enter image description here

您还可以添加方案来运行测试子集。从命令行运行测试时,您可以指定用于测试的方案(至少在fastlane中)。

答案 2 :(得分:5)

我和你的情况类似,并且已经构建了一个python脚本,触发了我想要的一组测试用例。它有点复杂的过程但对我有用,并且随着时间的推移在实现DataProvider方法,重新运行失败的测试用例和我需要的其他自定义方面非常有用。

您希望实现的一些相关步骤。

  1. 覆盖XCTestCase中存在的testInvocations方法以执行以下步骤
    • 在此方法中,我阅读了环境变量XXXX。
    • 此环境变量基本上是逗号分隔的测试用例方法名称。
    • 现在为您要触发的每个测试方法创建NSInvocations。
    • 返回Invocations数组。
  2. 如何传递环境变量?
    • 在方案中添加名为XXXX的环境变量。
    • 方案文件是标准的xml文件,编写一个脚本来修改方案文件,以包含环境变量中逗号分隔的值。
  3. 如果您需要更多信息,请添加评论,我会回复。

答案 3 :(得分:3)

要运行单个测试或测试类,您可以单击装订线中旁边的菱形。如果您打开了行号,它就在旁边。 在这个截图中,我的鼠标悬停在钻石上。注意它是如何变为一个小的播放箭头,表明它将被运行。 然后,您可以使用^⌥⌘G重新执行最近运行的测试。 据我所知,这不能通过xcodebuild完成。

答案 4 :(得分:1)

-only-testing:<MyXCTargetForTest>/<MyTestSuite>/<MyTestMethod>
  • MyXCTargetForTest-目标
  • MyTestSuite-类名
  • MyTestMethod-test_name

例如,如果Test Navigator看起来像

enter image description here

参数将具有以下类型

-only-testing:SampleAppTest/SampleAppTest/testExample

您还可以使用-skip-testing

跳过测试

了解更多here