spock 如何在测试方法上提供一组预定义的数据集
时间: 2024-10-09 08:14:54 浏览: 33
Spock 是一个基于 Groovy 的 BDD (行为驱动开发) 框架,它非常适合于编写简洁明了的单元测试。在 Spock 中,你可以通过 `@Unroll` 注解配合数据表(Data Table)来为测试方法提供一组预定义的数据集。
首先,创建一个数据表,这通常是一个多行的表格形式,每个数据行代表一组输入值和预期结果:
```groovy
@DataProvider(name = 'myDataProvider')
@given('some data to test')
def testData() {
[input1: "value1", input2: 42, expectedOutput: true]
[input3: "another value", input4: 0, expectedOutput: false]
}
```
然后,在你的测试方法上添加 `@Unroll` 注解,并引用刚才定义的数据集:
```groovy
@Test(dataProvider = 'myDataProvider')
void myTest(@Given("some input") Map<String, Object> inputData, @ExpectedResult int expectedOutput) {
// 实现你的测试逻辑
def actualOutput = processInput(inputData.input1, inputData.input2)
assert actualOutput == expectedOutput
}
```
在这个例子中,`processInput()` 方法会接收来自数据表的 `input1` 和 `input2`,并且与 `expectedOutput` 对照,检查实际结果是否匹配。
阅读全文