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
一个人怎么办?您不必 运行 A
到 E
只是为了验证 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() { ... }
}
XCTest 测试函数按字母顺序调用(在 Xcode 8 之前)。对于 Xcode 8,我无法假设系统调用测试用例的顺序。
有人可以解释一下吗?
class 中的测试 运行 在 Xcode 8 中的随机顺序。这鼓励测试 独立 和 可重复.
我假设您想 运行 以特定顺序进行测试,因为它们 "chain" 彼此分离。例如,test_A
登录一个假用户,test_B
将一个项目添加到购物车。应该避免这些类型的测试,因为它们过于依赖彼此。如果你想 运行 test_F
一个人怎么办?您不必 运行 A
到 E
只是为了验证 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() { ... }
}