diff options
Diffstat (limited to 'junit4/src/test/java/org/junit/tests/manipulation/SingleMethodTest.java')
-rw-r--r-- | junit4/src/test/java/org/junit/tests/manipulation/SingleMethodTest.java | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/junit4/src/test/java/org/junit/tests/manipulation/SingleMethodTest.java b/junit4/src/test/java/org/junit/tests/manipulation/SingleMethodTest.java new file mode 100644 index 0000000..393a844 --- /dev/null +++ b/junit4/src/test/java/org/junit/tests/manipulation/SingleMethodTest.java @@ -0,0 +1,168 @@ +package org.junit.tests.manipulation; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +import java.util.Arrays; +import java.util.List; + +import junit.framework.JUnit4TestAdapter; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.Description; +import org.junit.runner.JUnitCore; +import org.junit.runner.Request; +import org.junit.runner.Result; +import org.junit.runner.RunWith; +import org.junit.runner.Runner; +import org.junit.runner.manipulation.Filter; +import org.junit.runner.manipulation.Filterable; +import org.junit.runner.manipulation.NoTestsRemainException; +import org.junit.runners.Parameterized; +import org.junit.runners.Suite; +import org.junit.runners.Parameterized.Parameters; +import org.junit.runners.Suite.SuiteClasses; + +public class SingleMethodTest { + public static int count; + + static public class OneTimeSetup { + @BeforeClass public static void once() { + count++; + } + + @Test public void one() { + } + + @Test public void two() { + } + } + + @Test public void oneTimeSetup() throws Exception { + count = 0; + Runner runner = Request.method(OneTimeSetup.class, "one").getRunner(); + Result result = new JUnitCore().run(runner); + + assertEquals(1, count); + assertEquals(1, result.getRunCount()); + } + + @RunWith(Parameterized.class) + static public class ParameterizedOneTimeSetup { + @Parameters + public static List<Object[]> params() { + return Arrays.asList(new Object[] {1}, new Object[] {2}); + } + + public ParameterizedOneTimeSetup(int x) { + } + + @Test public void one() { + } + } + + @Test public void parameterizedFilterToSingleMethod() throws Exception { + count = 0; + Runner runner = Request.method(ParameterizedOneTimeSetup.class, + "one[0]").getRunner(); + Result result = new JUnitCore().run(runner); + + assertEquals(1, result.getRunCount()); + } + + @RunWith(Parameterized.class) + static public class ParameterizedOneTimeBeforeClass { + @Parameters + public static List<Object[]> params() { + return Arrays.asList(new Object[] {1}, new Object[] {2}); + } + + public ParameterizedOneTimeBeforeClass(int x) { + } + + @BeforeClass public static void once() { + count++; + } + + @Test public void one() { + } + } + + + @Test public void parameterizedBeforeClass() throws Exception { + count = 0; + JUnitCore.runClasses(ParameterizedOneTimeBeforeClass.class); + assertEquals(1, count); + } + + @Test public void filteringAffectsPlan() throws Exception { + Runner runner = Request.method(OneTimeSetup.class, "one").getRunner(); + assertEquals(1, runner.testCount()); + } + + @Test public void nonexistentMethodCreatesFailure() throws Exception { + assertEquals(1, new JUnitCore().run( + Request.method(OneTimeSetup.class, "thisMethodDontExist")) + .getFailureCount()); + } + + @Test(expected = NoTestsRemainException.class) + public void filteringAwayEverythingThrowsException() throws NoTestsRemainException { + Filterable runner = (Filterable) Request.aClass(OneTimeSetup.class).getRunner(); + runner.filter(new Filter() { + @Override + public boolean shouldRun(Description description) { + return false; + } + + @Override + public String describe() { + return null; + } + }); + } + + public static class TestOne { + @Test public void a() { + } + + @Test public void b() { + } + } + + public static class TestTwo { + @Test public void a() { + } + + @Test public void b() { + } + } + + @RunWith(Suite.class) + @SuiteClasses( { TestOne.class, TestTwo.class }) + public static class OneTwoSuite { + } + + @Test public void eliminateUnnecessaryTreeBranches() throws Exception { + Runner runner = Request.aClass(OneTwoSuite.class).filterWith( + Description.createTestDescription(TestOne.class, "a")) + .getRunner(); + Description description = runner.getDescription(); + assertEquals(1, description.getChildren().size()); + } + + public static class HasSuiteMethod { + @Test public void a() {} + @Test public void b() {} + + public static junit.framework.Test suite() { + return new JUnit4TestAdapter(HasSuiteMethod.class); + } + } + + @Test public void classesWithSuiteMethodsAreFiltered() { + int testCount= Request.method(HasSuiteMethod.class, "a").getRunner().getDescription().testCount(); + assertThat(testCount, is(1)); + } +}
\ No newline at end of file |