【发布时间】:2017-01-28 21:15:06
【问题描述】:
在 Xcode 8 之前,您可以通过在给定的 XCTestCase 类中按字母顺序排列测试方法的名称(如this answer 中所述),让您的单元测试以特定顺序运行。例如,测试会像这样运行:testA、testB、testC、testD 等。
但是在 Xcode 8 中,情况不再如此。例如,我有名为 test1、test2、test3、test4 的测试方法,并且 test4 将首先运行(见下面的截图)。然后我可以重新运行,test2 将在下一次运行时首先运行。
那么我现在如何让测试在 Xcode 8 上按顺序运行?
【问题讨论】:
-
正如您链接到的问答的 cmets 中所说,单元测试应该能够独立于任何其他测试运行 - 为什么需要订购它们?
-
它们不是单元测试,它们是端到端测试中的顺序测试。为什么它们必须是单元测试?并非所有测试都是这个世界上的单元测试。
-
不管怎样,我暂时通过使用观察者和选择器、完成块等将它全部变成了一个大测试。你会发现有些情况下大的端到端测试可能非常除了标准的单元测试之外很有价值。但是,如果每个 XCTestCase 方法都应该代表一个“单元”而不依赖于其他测试,那么,它就是这样。我只是不确定这是否是一个错误。
-
但我们喜欢端到端测试,因为它模拟了真实用户实际使用应用程序的方式,并且在帮助我们找到与多线程相关的棘手问题方面非常宝贵同时,单元测试根本看不到,因为单元是它们自己线程上的东西,而单元测试无法处理其他线程中发生的事情等。
-
我在同一条船上,需要按特定顺序运行一组已定义的 UI 测试。如果不先处理登录页面,您将无法访问登录页面。与单元测试无关,因为它是端到端的。我现在不知所措,不想创建 10 个测试目标来执行健全性测试。
标签: objective-c xcode unit-testing xcode8 xctestcase