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 }