如何在Xcode中执行数据驱动的测试

问题描述:

我正在Xcode中编写UI测试,并希望使用数据驱动的测试来完成此操作。如何使用Xcode的新UI测试框架XCUI来实现?测试用例将是以下形式:如何在Xcode中执行数据驱动的测试

class StepUnitFormatterTests: XCTestCase { 
//> (0, "0 steps") 
//> (1, "1 step") 
//> (2, "2 steps") 
//> (999, "999 steps") 
//> (1000, "1,000 steps") 
//> (1000000, "1,000,000 steps") 
//> (3.3, "3 steps") 
//> (-5, "0 steps") 
func testFormat(_ numberOfSteps: Double, _ expected: String) { 
    XCTAssertEqual(StepUnitFormatter().format(numberOfSteps), expected) 
    } 
} 

UITests不是测试你的案件的权利类型。您通常使用UITests来模拟用户与您的应用程序的交互。例如,要测试按下某个按钮会将您带到下一个屏幕。

要测试您StepUnitFormatter是否正常工作,你通常会写一个单元测试

你的测试功能将无法正常工作,因为在单元测试(和UITests)班的测试功能不允许参数。

在你的特殊情况的功能看起来是这样的:

func testStepUnitFormatter() { 
    let formatter = StepUnitFormatter() 
    XCTAssertEqual(formatter.format(0), "0 steps") 
    XCTAssertEqual(formatter.format(1), "1 step") 
    XCTAssertEqual(formatter.format(2), "2 steps") 
    XCTAssertEqual(formatter.format(1000), "1,000 steps") 
    XCTAssertEqual(formatter.format(3.3), "3 steps") 
    // etc. 
} 

但同样,这个代码是一个单元测试类的一部分。要对UITest进行相同的操作,您必须通过实际运行应用程序并使用用户界面输入所有您想要测试的不同值来测试您的格式化程度。这就是为什么你应该在这种情况下使用UnitTests而不是UITests。