1

我有一个使用用户定义的类作为参数的参数化测试,

    @ParameterizedTest
    @CsvSource({ "1 a", "2 b" })
    @Order(8)
    void csvSourceIntString(IntString is) {
    }

IntString定义如下,注意我定义了toString

import java.util.Scanner;

class IntString {
    int i;
    String s;

    public IntString(int i, String s) {
        this.i = i;
        this.s = s;
    }

    public IntString(String is) {
        try (Scanner scanner = new Scanner(is)) {
            i = scanner.nextInt();
            s = scanner.next();
        }
    }

    @Override
    public String toString() {
        return "i=" + i + ",s=" + s;
    }
}

我期待测试的默认显示名称是

[1] i=1,s=a
[2] i=2,s=b

相反,当我在 Eclipse 中运行它时,它们就是@CsvSource

[1] 1 a
[2] 2 b

这是预期的吗?

顺便说一句,@MethodSource给了我预期的默认显示名称。

4

1 回答 1

1

您可以尝试明确设置参数化测试的名称:

@ParameterizedTest(name = "[{index}] {0}")
@CsvSource({ "1 a", "2 b" })
@Order(8)
void csvSourceIntString(IntString is) {
}
于 2021-07-02T10:14:14.773 回答