1 package org.junit.tests.manipulation; 2 3 import static org.junit.Assert.assertTrue; 4 5 import java.util.Arrays; 6 import java.util.List; 7 8 import org.junit.Assert; 9 import org.junit.Test; 10 import org.junit.runner.Description; 11 import org.junit.runner.JUnitCore; 12 import org.junit.runner.Result; 13 import org.junit.runner.RunWith; 14 import org.junit.runner.manipulation.Filter; 15 import org.junit.runners.Parameterized; 16 import org.junit.runners.Parameterized.Parameters; 17 18 public class FilterableTest { 19 public static class FilteredRunner extends Parameterized { 20 public FilteredRunner(Class<?> klass) throws Throwable { 21 super(klass); 22 filter(new Filter() { 23 24 @Override 25 public boolean shouldRun(Description description) { 26 return !description.getDisplayName().contains("skip"); 27 } 28 29 @Override 30 public String describe() { 31 return "skip methods containing the word 'skip'"; 32 } 33 }); 34 } 35 } 36 37 @RunWith(FilteredRunner.class) 38 public static class FilteredTest { 39 @Parameters 40 public static List<Object[]> parameters() { 41 return Arrays.asList(new Object[]{3}, new Object[]{4}); 42 } 43 44 public FilteredTest(int x) { 45 } 46 47 @Test 48 public void skipThis() { 49 Assert.fail(); 50 } 51 52 @Test 53 public void runThis() { 54 } 55 } 56 57 @Test 58 public void testFilterInRunnerConstructor() { 59 Result result = JUnitCore.runClasses(FilteredTest.class); 60 assertTrue(result.wasSuccessful()); 61 } 62 }