blob: cbe35220efdc664bd1dace2a41ff4c0a941160e8 [file] [log] [blame]
package org.junit.tests.description;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.Description;
import org.junit.runner.Request;
public class AnnotatedDescriptionTest {
@Retention(RetentionPolicy.RUNTIME)
public @interface MyOwnAnnotation {
}
@MyOwnAnnotation
public static class AnnotatedClass {
@Test
public void a() {
}
}
@Test
public void annotationsExistOnDescriptionsOfClasses() {
assertTrue((describe(AnnotatedClass.class).getAnnotation(
MyOwnAnnotation.class) != null));
}
@Test
public void getAnnotationsReturnsAllAnnotations() {
assertEquals(1, describe(ValueAnnotatedClass.class).getAnnotations()
.size());
}
@Ignore
public static class IgnoredClass {
@Test
public void a() {
}
}
@Test
public void annotationsExistOnDescriptionsOfIgnoredClass() {
assertTrue((describe(IgnoredClass.class).getAnnotation(Ignore.class) != null));
}
@Retention(RetentionPolicy.RUNTIME)
public @interface ValuedAnnotation {
String value();
}
@ValuedAnnotation("hello")
public static class ValueAnnotatedClass {
@Test
public void a() {
}
}
@Test
public void descriptionOfTestClassHasValuedAnnotation() {
Description description = describe(ValueAnnotatedClass.class);
assertEquals("hello", description.getAnnotation(ValuedAnnotation.class)
.value());
}
@Test
public void childlessCopyOfDescriptionStillHasAnnotations() {
Description description = describe(ValueAnnotatedClass.class);
assertEquals("hello", description.childlessCopy().getAnnotation(ValuedAnnotation.class)
.value());
}
@Test
public void characterizeCreatingMyOwnAnnotation() {
Annotation annotation = new Ignore() {
public String value() {
return "message";
}
public Class<? extends Annotation> annotationType() {
return Ignore.class;
}
};
assertEquals(Ignore.class, annotation.annotationType());
}
private Description describe(Class<?> testClass) {
return Request.aClass(testClass).getRunner().getDescription();
}
}