使用另一个注释的 Java 自定义注释

标签 java powermock java-11

由于 Powermock 和 Java 11 的问题,我们不得不在所有测试类上使用 @PowerMockIgnore。

@PowerMockIgnore({ "javax.management.*", "com.sun.org.apache.xerces.*", "javax.xml.*",
        "org.xml.*", "org.w3c.dom.*", "com.sun.org.apache.xalan.*", "javax.activation.*" })

为了避免在所有测试类中重复此操作,我们创建了一个自定义注释来代替在一个位置定义此 PowerMockIgnore。 这样我们在所有测试类中所需要的就是

@SuppressPowerMockInitError

但是:这个自定义注释似乎不起作用。

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import org.powermock.core.classloader.annotations.PowerMockIgnore;

@Retention(RUNTIME)
@Target({ TYPE, METHOD })
@Inherited
@Documented
@PowerMockIgnore({ "javax.management.*", "com.sun.org.apache.xerces.*", "javax.xml.*",
        "org.xml.*", "org.w3c.dom.*", "com.sun.org.apache.xalan.*", "javax.activation.*" })
public @interface SuppressPowerMockInitError {

}

最佳答案

看起来不可能通过注释来实现这一点。

但是,创建一个具有此通用注释的抽象类似乎是实现此目的的最佳方法。

import org.powermock.core.classloader.annotations.PowerMockIgnore;

@PowerMockIgnore({ "javax.management.*", "com.sun.org.apache.xerces.*", "javax.xml.*",
        "org.xml.*", "org.w3c.dom.*", "com.sun.org.apache.xalan.*", "javax.activation.*" })
public abstract class AbstractPowerMockTest {

}

关于使用另一个注释的 Java 自定义注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57956164/

相关文章:

java - JXLS 2.0 条件格式论坛未按行更新

java - Mockito 1.9 : format the expected value (like "actual formatter" in custom ArgumentMatcher)

java - 使用PowerMock防止静态初始化

java - 为什么用PowerMockRunner运行时不能使用@InjectMocks字段匹配?

spring-boot - 使用 Java 低级 rest 客户端的 Elasticsearch

java - ContentResolver.openOutputStream() 抛出 FileNotFoundException

java - 如何添加我从开关盒输出中获得的数字?

Java ArrayList不使用重写equals(Object o)方法进行比较

java - java模块的springframework ldap核心问题

java-11 - Mapstruct Java11 兼容吗?