如何在Xcode 8中按顺序调用XCTest测试用例函数?

Con*_*sed 2 function xctest xcode8

XCTest测试功能按字母顺序调用(在Xcode 8之前)。使用Xcode 8,我无法假定系统以哪种顺序调用测试用例。

有人可以照亮它吗?

Joe*_*tti 5

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


我假设您要按特定的顺序运行测试,因为它们彼此“连锁”。例如,test_A登录假用户test_B并将商品添加到购物车。应避免这类测试,因为它们之间的相互依赖度很高。如果您想test_F独自跑步怎么办?你不应该运行A通过E只是为了验证F仍然有效。另外,您可能会引入测试污染,这种污染会以您尚未意识到的方式影响其他测试。

也就是说,在测试之间具有共同或共享的行为很好,甚至可以避免。您可以将此登录名放入setUp方法中,或提取私有帮助器方法以处理特定事件。例如,这是一个非常高级的示例。

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, "$21")
   }

   private func login(email: String, password: String) { ... }
   private func addItemToCart(item: Int) { ... }
   private func checkout() { ... }
}
Run Code Online (Sandbox Code Playgroud)