我不知道你是否设法从标题中弄清楚我想做什么,所以我会尝试用例子来解释
假设我创建了自己的注解@VerifySomething
我已经为该注解创建了测试类以确保它有效。
现在假设我有类 SomeClass
,其字段 something
带有注解 @VerifySomething
class SomeClass {
@VerifySomething
String something;
}
到目前为止一切顺利,但现在我想为我的 SomeClass
创建 test class
但是我认为验证某物的所有测试用例没有任何意义我已经检查过 @VerifySomething
在测试该注释的类中是否正常工作,但是我需要确保该字段实际上具有 @VerifySomething
注释而不复制粘贴所有内容这些测试用例。
所以我的问题是,有没有一种方法可以检查某个字段是否有一个或多个必需的注释,而无需编写我已经在注释测试类中编写的测试用例,以确保它按预期工作。
最佳答案
可以使用getAnnotation
判断字段上是否有特定的Annotation,以注解类为参数:
field.getAnnotation( SomeAnnotation.class );
这里有一个方法可以用来验证一个类是否有一个由给定注释注释的字段:
import java.lang.reflect.Field;
import javax.validation.constraints.NotNull;
import org.junit.Test;
import org.springframework.util.Assert;
public class TestHasAnnotatedField {
@Test
public void testHasFieldsWithAnnotation() throws SecurityException, NoSuchFieldException {
Class<?>[] classesToVerify = new Class[] {MyClass1.class, MyClass2.class};
for (Class<?> clazz : classesToVerify) {
Field field = clazz.getDeclaredField("something");
Assert.notNull(field.getAnnotation(NotNull.class));
}
}
static class MyClass1 { @NotNull String something; }
static class MyClass2 { @NotNull String something; }
}
关于java - 确定字段是否使用给定的注释进行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210588/