    001    package org.junit.runners.model;
    002
    003    import java.util.List;
    004
    005    /**
    006     * Thrown by {@link org.junit.runner.Runner}s in case the class under test is not valid.
    007     * <p>
    008     * Its message conveniently lists all of the validation errors.
    009     *
    010     * @since 4.13
    011     */
    012    public class InvalidTestClassError extends InitializationError {
    013        private static final long serialVersionUID = 1L;
    014
    015        private final String message;
    016
    017        public InvalidTestClassError(Class<?> offendingTestClass, List<Throwable> validationErrors) {
    018            super(validationErrors);
    019            this.message = createMessage(offendingTestClass, validationErrors);
    020        }
    021
    022        private static String createMessage(Class<?> testClass, List<Throwable> validationErrors) {
    023            StringBuilder sb = new StringBuilder();
    024            sb.append(String.format("Invalid test class '%s':", testClass.getName()));
    025            int i = 1;
    026            for (Throwable error : validationErrors) {
    027                sb.append("\n  " + (i++) + ". " + error.getMessage());
    028            }
    029            return sb.toString();
    030        }
    031
    032        /**
    033         * @return a message with a list of all of the validation errors
    034         */
    035        @Override
    036        public String getMessage() {
    037            return message;
    038        }
    039    }