繁体   English   中英

如何将 JUnit 注释组合成自定义注释?

[英]How to combine JUnit annotations into a custom annotation?

(使用 OpenJDK-13 和 JUnit5-Jupiter)

问题是我的单元测试每个都使用了一个不小的 JUnit 注释系统,如下所示:

@ParameterizedTest
@MethodSource("myorg.ccrtest.testlogic.DataProviders#standardDataProvider")
@Tags({@Tag("ccr"), @Tag("standard")})

这使得测试编写有点乏味,测试代码有点长,当然,当需要更改时,这是一件苦差事!

想知道我是否可以创建自己的 JUnit 注释: @CcrStandardTest ,这意味着上面的所有注释?

我还尝试将类定义中的注释向上移动(希望它们随后适用于类的所有方法),但编译器说不:“@ParameterizedTest 不适用于类型”

您可以进行组合注释

JUnit Jupiter 注释可以用作元注释 这意味着您可以定义自己的组合注释,该注释将自动继承其元注释的语义。

例如:

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD})
@ParameterizedTest
@MethodSource("myorg.ccrtest.testlogic.DataProviders#standardDataProvider")
@Tag("ccr")
@Tag("standard")
public @interface CcrStandardTest {}

然后,您将组合注释放在您的测试方法上:

@CcrStandardTest
void testFoo(/* necessary parameters */) {
  // perform test
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM