001 package org.junit.runner; 002 003 import static java.util.Collections.emptyList; 004 import static java.util.Collections.singletonList; 005 006 import java.util.List; 007 008 import org.junit.FixMethodOrder; 009 import org.junit.runners.model.TestClass; 010 import org.junit.validator.AnnotationValidator; 011 012 /** 013 * Validates that there are no errors in the use of the {@code OrderWith} 014 * annotation. If there is, a {@code Throwable} object will be added to the list 015 * of errors. 016 * 017 * @since 4.13 018 */ 019 public final class OrderWithValidator extends AnnotationValidator { 020 021 /** 022 * Adds to {@code errors} a throwable for each problem detected. Looks for 023 * {@code FixMethodOrder} annotations. 024 * 025 * @param testClass that is being validated 026 * @return A list of exceptions detected 027 * 028 * @since 4.13 029 */ 030 @Override 031 public List<Exception> validateAnnotatedClass(TestClass testClass) { 032 if (testClass.getAnnotation(FixMethodOrder.class) != null) { 033 return singletonList( 034 new Exception("@FixMethodOrder cannot be combined with @OrderWith")); 035 } 036 return emptyList(); 037 } 038 }