首页 > 解决方案 > junit 5 自定义参数化测试

问题描述

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

    @ParameterizedTest(name = PARAMETERIZED_TESTS_NAME_PLACEHOLDER)

wherePARAMETERIZED_TESTS_NAME_PLACEHOLDER 在其自己的实用程序类中定义

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 {

}

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

任何帮助,将不胜感激

标签: javajunit5parametrized-testing

解决方案


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

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

}

对我来说这不是自定义注释的默认保留策略似乎很奇怪,请参阅这篇文章的更多信息。


推荐阅读