一尘不染

Java 更改参数化测试的名称

java

在JUnit4中使用参数化测试时,是否可以设置自己的自定义测试用例名称?

我想将默认设置更改为[Test class].runTest[n]有意义的设置。


阅读 321

收藏
2020-03-21

共1个答案

一尘不染

此功能使其成为JUnit 4.11的一部分。

要使用更改参数化测试的名称,请说:

@Parameters(name="namestring")

namestring是一个字符串,可以具有以下特殊的占位符:

  • {index} - the index of this set of arguments. The default namestring is {index}.
  • {0} - the first parameter value from this invocation of the test.
  • {1} - the second parameter value
  • and so on

测试的最终名称将是测试方法的名称,后跟namestring方括号,如下所示。

例如(从单元测试改编为Parameterized注释):

@RunWith(Parameterized.class)
static public class FibonacciTest {

    @Parameters( name = "{index}: fib({0})={1}" )
    public static Iterable<Object[]> data() {
        return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 },
                { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } });
    }

    private final int fInput;
    private final int fExpected;

    public FibonacciTest(int input, int expected) {
        fInput= input;
        fExpected= expected;
    }

    @Test
    public void testFib() {
        assertEquals(fExpected, fib(fInput));
    }

    private int fib(int x) {
        // TODO: actually calculate Fibonacci numbers
        return 0;
    }
}

将使用testFib[1: fib(1)=1]和命名testFib[4: fib(4)=3]。(testFib名称的一部分是的方法名称@Test)。

2020-03-21