在Java中,JUnit 5是一个流行的单元测试框架,它支持参数化测试。参数化测试允许你使用不同的输入数据多次运行相同的测试逻辑。这对于测试具有多种可能输入的方法非常有用。
要在JUnit 5中实现参数化测试,请按照以下步骤操作:
pom.xml
文件中: <dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
@ParameterizedTest
注解标记你想要进行参数化的测试方法。@ValueSource
、@EnumSource
、@CsvSource
等注解来定义测试方法的输入源。这些注解会为你的测试方法提供不同的输入参数。下面是一个简单的参数化测试示例:
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class ParameterizedTestExample {
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4, 5})
void testSquare(int input) {
int expected = input * input;
int actual = square(input);
assertEquals(expected, actual, "Square of " + input);
}
private int square(int x) {
return x * x;
}
}
在上面的示例中,testSquare
方法被标记为参数化测试,并使用@ValueSource
注解提供了一组整数输入。对于每个输入值,测试方法都会运行一次,并检查输入值的平方是否正确。