| package org.junit.tests.assertion; |
| |
| import static org.hamcrest.CoreMatchers.containsString; |
| import static org.hamcrest.CoreMatchers.equalTo; |
| import static org.hamcrest.CoreMatchers.instanceOf; |
| import static org.hamcrest.MatcherAssert.assertThat; |
| import static org.junit.Assert.assertSame; |
| import static org.junit.Assert.assertTrue; |
| import static org.junit.Assert.fail; |
| |
| import java.lang.annotation.AnnotationFormatError; |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.List; |
| |
| import org.hamcrest.CoreMatchers; |
| import org.junit.Test; |
| import org.junit.TestCouldNotBeSkippedException; |
| import org.junit.internal.AssumptionViolatedException; |
| import org.junit.runners.model.MultipleFailureException; |
| |
| |
| /** |
| * Tests for {@link org.junit.runners.model.MultipleFailureException} |
| * |
| * @author kcooney@google.com (Kevin Cooney) |
| */ |
| public class MultipleFailureExceptionTest { |
| private static final String LINE_SEPARATOR = System.getProperty("line.separator"); |
| |
| @Test |
| public void assertEmptyDoesNotThrowForEmptyList() throws Exception { |
| MultipleFailureException.assertEmpty(Collections.<Throwable>emptyList()); |
| } |
| |
| @Test |
| public void assertEmptyRethrowsSingleRuntimeException() throws Exception { |
| Throwable exception= new ExpectedException("pesto"); |
| List<Throwable> errors= Collections.singletonList(exception); |
| try { |
| MultipleFailureException.assertEmpty(errors); |
| fail(); |
| } catch (ExpectedException e) { |
| assertSame(e, exception); |
| } |
| } |
| |
| @Test |
| public void assertEmptyRethrowsSingleError() throws Exception { |
| Throwable exception= new AnnotationFormatError("changeo"); |
| List<Throwable> errors= Collections.singletonList(exception); |
| try { |
| MultipleFailureException.assertEmpty(errors); |
| fail(); |
| } catch (AnnotationFormatError e) { |
| assertSame(e, exception); |
| } |
| } |
| |
| @Test |
| public void assertEmptyThrowsMultipleFailureExceptionForManyThrowables() throws Exception { |
| List<Throwable> errors = new ArrayList<Throwable>(); |
| errors.add(new ExpectedException("basil")); |
| errors.add(new RuntimeException("garlic")); |
| |
| try { |
| MultipleFailureException.assertEmpty(errors); |
| fail(); |
| } catch (MultipleFailureException expected) { |
| assertThat(expected.getFailures(), equalTo(errors)); |
| assertTrue(expected.getMessage().startsWith("There were 2 errors:" + LINE_SEPARATOR)); |
| assertTrue(expected.getMessage().contains("ExpectedException(basil)" + LINE_SEPARATOR)); |
| assertTrue(expected.getMessage().contains("RuntimeException(garlic)")); |
| } |
| } |
| |
| @Test |
| public void assertEmptyErrorListConstructorFailure() { |
| try { |
| new MultipleFailureException(Collections.<Throwable>emptyList()); |
| fail(); |
| } catch (IllegalArgumentException expected) { |
| assertThat(expected.getMessage(), |
| containsString("List of Throwables must not be empty")); |
| } |
| } |
| |
| @Test |
| public void assertEmptyWrapsAssumptionFailuresForManyThrowables() throws Exception { |
| List<Throwable> errors = new ArrayList<Throwable>(); |
| AssumptionViolatedException assumptionViolatedException = new AssumptionViolatedException("skip it"); |
| errors.add(assumptionViolatedException); |
| errors.add(new RuntimeException("garlic")); |
| |
| try { |
| MultipleFailureException.assertEmpty(errors); |
| fail(); |
| } catch (MultipleFailureException expected) { |
| assertThat(expected.getFailures().size(), equalTo(2)); |
| assertTrue(expected.getMessage().startsWith("There were 2 errors:" + LINE_SEPARATOR)); |
| assertTrue(expected.getMessage().contains("TestCouldNotBeSkippedException(Test could not be skipped")); |
| assertTrue(expected.getMessage().contains("RuntimeException(garlic)")); |
| Throwable first = expected.getFailures().get(0); |
| assertThat(first, instanceOf(TestCouldNotBeSkippedException.class)); |
| Throwable cause = ((TestCouldNotBeSkippedException) first).getCause(); |
| assertThat(cause, instanceOf(AssumptionViolatedException.class)); |
| assertThat((AssumptionViolatedException) cause, CoreMatchers.sameInstance(assumptionViolatedException)); |
| } |
| } |
| |
| private static class ExpectedException extends RuntimeException { |
| private static final long serialVersionUID = 1L; |
| |
| public ExpectedException(String message) { |
| super(message); |
| } |
| } |
| } |