JUnit5多个参数
时间: 2024-02-16 15:59:58 浏览: 23
JUnit5 支持使用 `@ParameterizedTest` 注解来进行多参数测试。你可以在该注解中使用 `@CsvSource`、`@ValueSource`、`@EnumSource` 等来提供测试参数。
以下是一个使用 `@CsvSource` 的例子,假设我们需要测试一个计算器类的加法方法:
```
@ParameterizedTest
@CsvSource({
"1, 1, 2",
"2, 3, 5",
"4, 4, 8"
})
void testAdd(int a, int b, int expected) {
Calculator calculator = new Calculator();
int result = calculator.add(a, b);
assertEquals(expected, result);
}
```
在上面的例子中,我们使用了 `@CsvSource` 来提供测试参数。每一行都代表一个测试用例,用逗号分隔开输入参数和期望输出值。在测试方法中,我们使用了 `assertEquals` 来断言计算结果是否正确。
你也可以使用 `@MethodSource` 注解来提供测试参数,该注解可以指定一个方法来返回测试参数。例如:
```
@ParameterizedTest
@MethodSource("source")
void testAdd(int a, int b, int expected) {
Calculator calculator = new Calculator();
int result = calculator.add(a, b);
assertEquals(expected, result);
}
static Stream<Arguments> source() {
return Stream.of(
Arguments.of(1, 1, 2),
Arguments.of(2, 3, 5),
Arguments.of(4, 4, 8)
);
}
```
在上面的例子中,我们定义了一个静态方法 `source` 来返回测试参数。该方法返回一个 `Stream`,其中每个元素都是一个 `Arguments` 对象,代表一个测试用例。在测试方法中,我们通过 `@MethodSource("source")` 注解来指定使用该方法作为测试参数来源。
除了上面提到的注解外,JUnit5 还提供了其他多种注解来支持多参数测试,你可以根据实际需求来选择合适的注解。