package org.junit.tests.manipulation; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.junit.runner.Description; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.RunWith; import org.junit.runner.manipulation.Filter; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; public class FilterableTest { public static class FilteredRunner extends Parameterized { public FilteredRunner(Class<?> klass) throws Throwable { super(klass); filter(new Filter() { @Override public boolean shouldRun(Description description) { return !description.getDisplayName().contains("skip"); } @Override public String describe() { return "skip methods containing the word 'skip'"; } }); } } @RunWith(FilteredRunner.class) public static class FilteredTest { @Parameters public static List<Object[]> parameters() { return Arrays.asList(new Object[]{3}, new Object[]{4}); } public FilteredTest(int x) { } @Test public void skipThis() { Assert.fail(); } @Test public void runThis() { } } @Test public void testFilterInRunnerConstructor() { Result result = JUnitCore.runClasses(FilteredTest.class); assertTrue(result.wasSuccessful()); } }