Skip to content

Commit

Permalink
Add a test that triggers an InitializationError in Request.classes(...)
Browse files Browse the repository at this point in the history
  • Loading branch information
Philip Graf committed Jan 6, 2015
1 parent 4969ffc commit 65887fc
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions src/test/java/org/junit/runner/RequestTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package org.junit.runner;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsEqual.equalTo;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.RunnerBuilder;

public class RequestTest {

@Test
public void shouldReportFailureWhenSuiteCannotBeInitialized() {
RunNotifier notifier = new RunNotifier();
final FailureRunListener runListener = new FailureRunListener();
notifier.addListener(runListener);

Request.classes(new FailingComputer(), FooTest.class, BarTest.class)
.getRunner()
.run(notifier);

assertThat("There should be exactly one failure for the failed suite and not one for each test class",
runListener.getFailures().size(), equalTo(1));
}

private static class FailingComputer extends Computer {

@Override
public Runner getSuite(RunnerBuilder builder, Class<?>[] classes)
throws InitializationError {
throw new InitializationError(new IllegalArgumentException());
}

}

private static class FailureRunListener extends RunListener {

private List<Failure> failures = new ArrayList<Failure>();

@Override
public void testFailure(Failure failure) throws Exception {
failures.add(failure);
}

public List<? extends Failure> getFailures() {
return failures;
}

}

private static class FooTest {
}

private static class BarTest {
}

}

0 comments on commit 65887fc

Please sign in to comment.