package org.junit.tests.experimental.results; import static java.util.Arrays.asList; import static org.hamcrest.CoreMatchers.allOf; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; import java.util.Arrays; import org.junit.experimental.results.PrintableResult; import org.junit.experimental.theories.DataPoint; import org.junit.experimental.theories.Theories; import org.junit.experimental.theories.Theory; import org.junit.runner.Description; import org.junit.runner.RunWith; import org.junit.runner.notification.Failure; @RunWith(Theories.class) public class PrintableResultTest { @Theory(nullsAccepted = false) public void backTraceHasGoodToString(String descriptionName, final String stackTraceClassName) { Failure failure = new Failure(Description .createSuiteDescription(descriptionName), new Throwable() { private static final long serialVersionUID = 1L; @Override public StackTraceElement[] getStackTrace() { return new StackTraceElement[]{new StackTraceElement( stackTraceClassName, "methodName", "fileName", 1)}; } }); assertThat(new PrintableResult(asList(failure)).toString(), allOf( containsString(descriptionName), containsString(stackTraceClassName))); } @DataPoint public static String SHELL_POINT = "Shell Point"; @Theory public void includeMultipleFailures(String secondExceptionName) { PrintableResult backtrace = new PrintableResult(Arrays.asList( new Failure(Description.createSuiteDescription("firstName"), new RuntimeException("firstException")), new Failure( Description.createSuiteDescription("secondName"), new RuntimeException(secondExceptionName)))); assertThat(backtrace.toString(), containsString(secondExceptionName)); } }