用不同的值运行junit测试的最佳方法是什么?

vpfxa7rd  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(116)

我想知道用多个值重新运行junit测试以确保覆盖函数的所有边缘情况的最佳方法是什么。(通常是测试目录中的每个文件,或者是覆盖所有主要边缘情况的一组值)
所以,我想做的测试的一个简化的伪例子

@testEach([1,3,5,7,11])
public void isPrime(int number) {
  assert("is prime", true, MyClass.isPrime(number);
}

@testEach([2,4,6,8,9,10])
public void isNotPrime(int number) {
  assert("is not prime", false, MyClass.isPrime(number);
}
7dl7o3gd

7dl7o3gd1#

在jUnit5下,这可以通过@ParameterizedTest来实现。

public class IsPrimeTest {
    @ParameterizedTest(name = "{0} should be prime")
    @ValueSource(ints = {1, 3, 5, 7, 11})
    public void isPrime(int number) {
        Assertions.assertThat(MyClass.isPrime(number))
                .isTrue();
    }

    @ParameterizedTest(name = "{0} should not be prime")
    @ValueSource(ints = {2, 4, 6, 8, 9, 10})
    public void isNotPrime(int number) {
        Assertions.assertThat(MyClass.isPrime(number))
                .isTrue();
    }
}

请注意,您可以使用多个源

  • @ValueSource
  • @EnumSource
  • @CsvSource
  • @MethodSource

参见Guide to JUnit 5 Parameterized Tests
在jUnit4下,这是通过JUnitParams实现的。参见Introduction to JUnitParams

相关问题