你的进口(
org.junit.Test
和
org.junit.runner.RunWith
)来自JUnit 4(
https://github.com/junit-team/junit4/wiki/Getting-started
)JUnit4本身并不支持参数化测试。对于JUnit 4,有一个单独的包
JUnitParams
你没有导入到你的项目中。
如果您想使用JUnit5,您需要从导入正确的
Test
注释(
https://junit.org/junit5/docs/current/user-guide/#writing-tests
):
import org.junit.jupiter.api.Test;
您需要更改参数化测试以使用本机JUnit5参数化测试支持(
https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests
):
import org.junit.jupiter.params.ParameterizedTest
@ParameterizedTest
@CsvSource({"10, 15, 25","-50, 10, -40","30, 100, 130"})
public void paramTestAddTwoNumbersV1(int num1, int num2, int expectedSum) {
VariousMethodsClass vmc = new VariousMethodsClass();
int result = vmc.addTwoNumbers(num1, num2);
assertEquals(expectedSum, result);
}
private Object[] getNumbersToAdd() {
return new Object[] {
new Object[] {10, 15, 25},
new Object[] {-50, 10, -40},
new Object[] {30, 100, 130}
};
}
@ParameterizedTest
@MethodSource("getNumbersToAdd")
public void paramTestAddTwoNumbersV2(int num1, int num2, int expectedSum) {
VariousMethodsClass vmc = new VariousMethodsClass();
int result = vmc.addTwoNumbers(num1, num2);
assertEquals(expectedSum, result);
}
@ParameterizedTest
@MethodSource
public void paramTestV3(int num1, int num2, int expectedSum){
VariousMethodsClass vmc = new VariousMethodsClass();
assertEquals(expectedSum,vmc.addTwoNumbers(num1, num2));
}
private Object[] parametersForParamTestV3(){
return new Object[] {
new Object[] {10, 15, 25},
new Object[] {-50, 10, -40},
new Object[] {30, 100, 130}
};
}
我省略了最后一个例子,因为JUnit5不支持
$()
用于写入阵列。