org.junit.experimental.categories.CategoryValidator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of junit Show documentation
Show all versions of junit Show documentation
JUnit is a unit testing framework for Java, created by Erich Gamma and Kent Beck.
package org.junit.experimental.categories;
import static java.util.Arrays.asList;
import static java.util.Collections.unmodifiableList;
import static java.util.Collections.unmodifiableSet;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.runners.model.FrameworkMethod;
import org.junit.validator.AnnotationValidator;
/**
* Validates that there are no errors in the use of the {@code Category}
* annotation. If there is, a {@code Throwable} object will be added to the list
* of errors.
*
* @since 4.12
*/
public final class CategoryValidator extends AnnotationValidator {
@SuppressWarnings("unchecked")
private static final Set> INCOMPATIBLE_ANNOTATIONS = unmodifiableSet(new HashSet>(
asList(BeforeClass.class, AfterClass.class, Before.class, After.class)));
/**
* Adds to {@code errors} a throwable for each problem detected. Looks for
* {@code BeforeClass}, {@code AfterClass}, {@code Before} and {@code After}
* annotations.
*
* @param method the method that is being validated
* @return A list of exceptions detected
*
* @since 4.12
*/
@Override
public List validateAnnotatedMethod(FrameworkMethod method) {
List errors = new ArrayList();
Annotation[] annotations = method.getAnnotations();
for (Annotation annotation : annotations) {
for (Class clazz : INCOMPATIBLE_ANNOTATIONS) {
if (annotation.annotationType().isAssignableFrom(clazz)) {
addErrorMessage(errors, clazz);
}
}
}
return unmodifiableList(errors);
}
private void addErrorMessage(List errors, Class clazz) {
String message = String.format("@%s can not be combined with @Category",
clazz.getSimpleName());
errors.add(new Exception(message));
}
}