XCTest测试函数按字母顺序调用(在Xcode 8之前)。使用Xcode 8,我无法假设系统调用测试用例的顺序。
有人可以点亮吗?
答案 0 :(得分:4)
类中的测试在Xcode 8中以随机顺序运行。这鼓励测试独立和可重复。
我假设您希望按特定顺序运行测试,因为它们彼此“链接”。例如,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() { ... }
}
方法或extract private helper methods中以处理特定事件。例如,这是一个非常的高级示例。
QVector<float> below_main_diagonal,
QVector<float> main_diagonal,
QVector<float> beyond_main_diagonal