junit 5 自定义参数化测试

junit 5 custom parametrized tests

我正在使用自定义名称如下的 Junit 5 参数化测试

    @ParameterizedTest(name = PARAMETERIZED_TESTS_NAME_PLACEHOLDER)

其中 PARAMETERIZED_TESTS_NAME_PLACEHOLDER 在它自己的实用程序中定义 class

public static final String PARAMETERIZED_TESTS_NAME_PLACEHOLDER = "#{index} [{argumentsWithNames}]";

我面临的问题是,当我广泛使用参数化测试时,我的代码被这些 @ParameterizedTest(name = PARAMETERIZED_TESTS_NAME_PLACEHOLDER).

搞得一团糟

所以我创建了一个自定义注释来解决这个问题

import java.lang.annotation.*;
import org.junit.jupiter.params.*;

@ParameterizedTest(name = PARAMETERIZED_TESTS_NAME_PLACEHOLDER)
@Inherited
public @interface CustomParametrizedTest {

}

但是当我在测试用例中使用它时,这个注解被忽略了

任何帮助将不胜感激

@ParamterizedTest 注释似乎具有运行时保留策略,表明它在运行时需要和处理。试试这个配置

@ParameterizedTest(name = PARAMETERIZED_TESTS_NAME_PLACEHOLDER)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface CustomParametrizedTest {

}

这不是自定义注释的默认保留策略,这对我来说似乎很奇怪,请从这里查看更多内容 post