package org.junit; import java.lang.reflect.Method; import java.util.Map; import java.util.Map.Entry; public class TestsFailed extends Exception { private static final long serialVersionUID = 2797492826431755971L; private final Map<Method, Throwable> results; public TestsFailed(Map<Method, Throwable> result) { super(serialize(result)); this.results = result; } private static String serialize(Map<Method, Throwable> result) { StringBuilder pass = new StringBuilder(); StringBuilder fail = new StringBuilder("\n"); for (Entry<Method, Throwable> e : result.entrySet()) { if (e.getValue() == null) { pass.append(e.getKey().getName()).append("\n (pass)"); } else { fail.append(e.getKey().getName()).append("\n (FAIL):"); print(fail, e.getValue()); } } return fail.append(pass).toString(); } private static void print(StringBuilder b, Throwable e) { while (e != null) { b.append(e).append("\n"); for (StackTraceElement trace : e.getStackTrace()) { b.append("\t ").append(trace).append("\n"); } e = e.getCause(); } } public Map<Method, Throwable> getResults() { return results; } }