Xcode8中如何按顺序调用XCTest测试用例函数?

How to call XCTest test case functions by order in Xcode 8?

XCTest 测试函数按字母顺序调用(在 Xcode 8 之前)。对于 Xcode 8,我无法假设系统调用测试用例的顺序。

有人可以解释一下吗?

class 中的测试 运行 在 Xcode 8 中的随机顺序。这鼓励测试 独立 可重复.


我假设您想 运行 以特定顺序进行测试,因为它们 "chain" 彼此分离。例如,test_A 登录一个假用户,test_B 将一个项目添加到购物车。应该避免这些类型的测试,因为它们过于依赖彼此。如果你想 运行 test_F 一个人怎么办?您不必 运行 AE 只是为了验证 F 仍然有效。此外,您可能会以您尚未意识到的方式引入影响其他测试的测试污染。

也就是说,在测试之间具有共同或共享的行为是好的,甚至是鼓励的。您可以将此登录放在 setUp 方法或 extract private helper methods 中以处理特定事件。例如,这是一个 非常 高级示例。

class AppTests: XCTestCase {
    let subject = ViewController()

    func setUp() {
        super.setUp()
        login(email: "user@example.com", password: "password")
    }

   func test_AddingItemsToCart() {
       addItemToCart(21)
       XCTAssertEqual(subject.itemsInCartLabel.text, "1")
   }

   func test_Checkout() {
       addItemToCart(15)
       checkout()
       XCTAssertEqual(subject.totalPriceLabel.text, "")
   }

   private func login(email: String, password: String) { ... }
   private func addItemToCart(item: Int) { ... }
   private func checkout() { ... }
}