summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrett Chabot <brettchabot@google.com>2014-01-27 15:23:40 -0800
committerBrett Chabot <brettchabot@google.com>2014-01-29 20:22:39 -0800
commite696b968bfe7521fe8c6623dbc466adb9b4302c9 (patch)
tree23107ce89439599e227fbc8d53c7a13bb9147d00
parent534cd34317e12124cc888baa2e3cec3a0b029129 (diff)
downloadtesting-e696b968bfe7521fe8c6623dbc466adb9b4302c9.tar.gz
Support multiple notAnnotation values
Bug 12208088 Change-Id: Id2c8ec1215ee7b63d24072131eab227743d366ce
-rw-r--r--support/src/android/support/test/runner/AndroidJUnitRunner.java3
-rw-r--r--support/tests/src/android/support/test/internal/runner/TestRequestBuilderTest.java571
2 files changed, 306 insertions, 268 deletions
diff --git a/support/src/android/support/test/runner/AndroidJUnitRunner.java b/support/src/android/support/test/runner/AndroidJUnitRunner.java
index 069d34f..9179519 100644
--- a/support/src/android/support/test/runner/AndroidJUnitRunner.java
+++ b/support/src/android/support/test/runner/AndroidJUnitRunner.java
@@ -32,7 +32,6 @@ import android.support.test.internal.runner.listener.SuiteAssignmentPrinter;
import android.test.suitebuilder.annotation.LargeTest;
import android.util.Log;
-
import org.junit.internal.TextListener;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
@@ -113,7 +112,7 @@ import java.util.List;
* <p/>
* <b>Filter test run to tests <i>without any</i> of a list of annotations:</b> adb shell am
* instrument -w -e notAnnotation com.android.foo.MyAnnotation,com.android.foo.AnotherAnnotation
- * com.android.foo/com.android.test.runner.AndroidJUnitRunner
+ * com.android.foo/android.support.test.runner.AndroidJUnitRunner
* <p/>
* <b>To run in 'log only' mode</b>
* -e log true
diff --git a/support/tests/src/android/support/test/internal/runner/TestRequestBuilderTest.java b/support/tests/src/android/support/test/internal/runner/TestRequestBuilderTest.java
index 2b885d9..677a437 100644
--- a/support/tests/src/android/support/test/internal/runner/TestRequestBuilderTest.java
+++ b/support/tests/src/android/support/test/internal/runner/TestRequestBuilderTest.java
@@ -193,6 +193,27 @@ public class TestRequestBuilderTest {
public static class InheritedAnnnotation extends SampleJUnit3Test {
}
+ public static class SampleMultipleAnnotation {
+
+ @Test
+ @SmallTest
+ public void testSmallSkipped() {
+ Assert.fail("should not run");
+ }
+
+ @Test
+ @MediumTest
+ public void testMediumSkipped() {
+ Assert.fail("should not run");
+ }
+
+ @Test
+ public void testRunThis() {
+ // fail this test too to make it easier to check it was run
+ Assert.fail("should run");
+ }
+ }
+
@InjectInstrumentation
public Instrumentation mInstr;
@@ -202,270 +223,288 @@ public class TestRequestBuilderTest {
/**
* Test initial condition for size filtering - that all tests run when no filter is attached
*/
- @Test
- public void testNoSize() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleTest.class.getName());
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- Result result = testRunner.run(request.getRequest());
- Assert.assertEquals(2, result.getRunCount());
- }
-
- /**
- * Test that size annotation filtering works
- */
- @Test
- public void testSize() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleTest.class.getName());
- b.addTestSizeFilter("small");
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- Result result = testRunner.run(request.getRequest());
- Assert.assertEquals(1, result.getRunCount());
- }
-
- /**
- * Test that size annotation filtering by class works
- */
- @Test
- public void testSize_class() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleTest.class.getName());
- b.addTestClass(SampleClassSize.class.getName());
- b.addTestSizeFilter("small");
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- Result result = testRunner.run(request.getRequest());
- Assert.assertEquals(3, result.getRunCount());
- }
-
- /**
- * Test case where entire JUnit3 test class has been filtered out
- */
- @Test
- public void testSize_classFiltered() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleTest.class.getName());
- b.addTestClass(SampleNoSize.class.getName());
- b.addTestSizeFilter("small");
- TestRequest request = b.build(mInstr, mBundle);
- MyRunListener l = new MyRunListener();
- JUnitCore testRunner = new JUnitCore();
- testRunner.addListener(l);
- testRunner.run(request.getRequest());
- Assert.assertEquals(1, l.mTestCount);
- }
-
- private static class MyRunListener extends RunListener {
- private int mTestCount = -1;
-
- @Override
- public void testRunStarted(Description description) throws Exception {
- mTestCount = description.testCount();
- }
- }
-
- /**
- * Test size annotations with JUnit3 test methods
- */
- @Test
- public void testSize_junit3Method() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleJUnit3Test.class.getName());
- b.addTestClass(SampleNoSize.class.getName());
- b.addTestSizeFilter("small");
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- Result r = testRunner.run(request.getRequest());
- Assert.assertEquals(2, r.getRunCount());
- }
-
- /**
- * Test @Suppress with JUnit3 tests
- */
- @Test
- public void testSuppress_junit3Method() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleJUnit3Suppressed.class.getName());
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- Result r = testRunner.run(request.getRequest());
- Assert.assertEquals(2, r.getRunCount());
- }
-
- /**
- * Test @Suppress in combination with size that filters out all methods
- */
- @Test
- public void testSuppress_withSize() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleJUnit3Suppressed.class.getName());
- b.addTestClass(SampleJUnit3Test.class.getName());
- b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- MyRunListener l = new MyRunListener();
- testRunner.addListener(l);
- Result r = testRunner.run(request.getRequest());
- Assert.assertEquals(2, r.getRunCount());
- Assert.assertEquals(2, l.mTestCount);
- }
-
- /**
- * Test @Suppress in combination with size that filters out all methods, with super class.
- */
- @Test
- public void testSuppress_withSizeAndSuper() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleJUnit3SuppressedWithSuper.class.getName());
- b.addTestClass(SampleJUnit3Test.class.getName());
- b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- MyRunListener l = new MyRunListener();
- testRunner.addListener(l);
- Result r = testRunner.run(request.getRequest());
- Assert.assertEquals(2, r.getRunCount());
- Assert.assertEquals(2, l.mTestCount);
- }
-
- /**
- * Test @Suppress when all methods have been filtered
- */
- @Test
- public void testSuppress_all() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleAllSuppressed.class.getName());
- b.addTestClass(SampleJUnit3Suppressed.class.getName());
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- MyRunListener l = new MyRunListener();
- testRunner.addListener(l);
- Result r = testRunner.run(request.getRequest());
- Assert.assertEquals(2, r.getRunCount());
- Assert.assertEquals(2, l.mTestCount);
- }
-
- /**
- * Test case where all methods are filtered out by combination of @Suppress and size when all
- * methods have been filtered.
- */
- @Test
- public void testSizeAndSuppress() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleSizeAndSuppress.class.getName());
- b.addTestClass(SampleJUnit3Test.class.getName());
- b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- MyRunListener l = new MyRunListener();
- testRunner.addListener(l);
- Result r = testRunner.run(request.getRequest());
- Assert.assertEquals(2, r.getRunCount());
- Assert.assertEquals(2, l.mTestCount);
- }
-
- /**
- * Test case where method has both a size annotation and suppress annotation. Expect suppress
- * to overrule the size.
- */
- @Test
- public void testSizeWithSuppress() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestClass(SampleSizeWithSuppress.class.getName());
- b.addTestClass(SampleJUnit3Test.class.getName());
- b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- MyRunListener l = new MyRunListener();
- testRunner.addListener(l);
- Result r = testRunner.run(request.getRequest());
- Assert.assertEquals(2, r.getRunCount());
- Assert.assertEquals(2, l.mTestCount);
- }
-
- /**
- * Test that annotation filtering by class works
- */
- @Test
- public void testAddAnnotationInclusionFilter() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addAnnotationInclusionFilter(SmallTest.class.getName());
- b.addTestClass(SampleTest.class.getName());
- b.addTestClass(SampleClassSize.class.getName());
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- Result result = testRunner.run(request.getRequest());
- Assert.assertEquals(3, result.getRunCount());
- }
-
- /**
- * Test that annotation filtering by class works
- */
- @Test
- public void testAddAnnotationExclusionFilter() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addAnnotationExclusionFilter(SmallTest.class.getName());
- b.addTestClass(SampleTest.class.getName());
- b.addTestClass(SampleClassSize.class.getName());
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- Result result = testRunner.run(request.getRequest());
- Assert.assertEquals(1, result.getRunCount());
- }
-
- /**
- * Test that annotation filtering by class works when methods are from superclass.
- *
- * TODO: add a similiar test to upstream junit.
- */
- @Test
- public void testAddAnnotationInclusionFilter_super() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addAnnotationInclusionFilter(SmallTest.class.getName());
- b.addTestClass(InheritedAnnnotation.class.getName());
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- Result result = testRunner.run(request.getRequest());
- Assert.assertEquals(2, result.getRunCount());
- }
-
- /**
- * Test that a method size annotation overrides a class size annotation.
- */
- @Test
- public void testTestSizeFilter_override() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
- b.addTestClass(SampleOverrideSize.class.getName());
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- Result result = testRunner.run(request.getRequest());
- Assert.assertEquals(1, result.getRunCount());
-
- b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestSizeFilter(TestRequestBuilder.MEDIUM_SIZE);
- b.addTestClass(SampleOverrideSize.class.getName());
- request = b.build(mInstr, mBundle);
- testRunner = new JUnitCore();
- result = testRunner.run(request.getRequest());
- Assert.assertEquals(1, result.getRunCount());
- }
-
- /**
- * Test that a method size annotation of same type as class level annotation is correctly
- * filtered.
- */
- @Test
- public void testTestSizeFilter_sameAnnotation() {
- TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
- b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
- b.addTestClass(SampleSameSize.class.getName());
- TestRequest request = b.build(mInstr, mBundle);
- JUnitCore testRunner = new JUnitCore();
- Result result = testRunner.run(request.getRequest());
- Assert.assertEquals(1, result.getRunCount());
- }
+ @Test
+ public void testNoSize() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleTest.class.getName());
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result result = testRunner.run(request.getRequest());
+ Assert.assertEquals(2, result.getRunCount());
+ }
+
+ /**
+ * Test that size annotation filtering works
+ */
+ @Test
+ public void testSize() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleTest.class.getName());
+ b.addTestSizeFilter("small");
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result result = testRunner.run(request.getRequest());
+ Assert.assertEquals(1, result.getRunCount());
+ }
+
+ /**
+ * Test that size annotation filtering by class works
+ */
+ @Test
+ public void testSize_class() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleTest.class.getName());
+ b.addTestClass(SampleClassSize.class.getName());
+ b.addTestSizeFilter("small");
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result result = testRunner.run(request.getRequest());
+ Assert.assertEquals(3, result.getRunCount());
+ }
+
+ /**
+ * Test case where entire JUnit3 test class has been filtered out
+ */
+ @Test
+ public void testSize_classFiltered() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleTest.class.getName());
+ b.addTestClass(SampleNoSize.class.getName());
+ b.addTestSizeFilter("small");
+ TestRequest request = b.build(mInstr, mBundle);
+ MyRunListener l = new MyRunListener();
+ JUnitCore testRunner = new JUnitCore();
+ testRunner.addListener(l);
+ testRunner.run(request.getRequest());
+ Assert.assertEquals(1, l.mTestCount);
+ }
+
+ private static class MyRunListener extends RunListener {
+ private int mTestCount = -1;
+
+ @Override
+ public void testRunStarted(Description description) throws Exception {
+ mTestCount = description.testCount();
+ }
+ }
+
+ /**
+ * Test size annotations with JUnit3 test methods
+ */
+ @Test
+ public void testSize_junit3Method() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleJUnit3Test.class.getName());
+ b.addTestClass(SampleNoSize.class.getName());
+ b.addTestSizeFilter("small");
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result r = testRunner.run(request.getRequest());
+ Assert.assertEquals(2, r.getRunCount());
+ }
+
+ /**
+ * Test @Suppress with JUnit3 tests
+ */
+ @Test
+ public void testSuppress_junit3Method() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleJUnit3Suppressed.class.getName());
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result r = testRunner.run(request.getRequest());
+ Assert.assertEquals(2, r.getRunCount());
+ }
+
+ /**
+ * Test @Suppress in combination with size that filters out all methods
+ */
+ @Test
+ public void testSuppress_withSize() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleJUnit3Suppressed.class.getName());
+ b.addTestClass(SampleJUnit3Test.class.getName());
+ b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ MyRunListener l = new MyRunListener();
+ testRunner.addListener(l);
+ Result r = testRunner.run(request.getRequest());
+ Assert.assertEquals(2, r.getRunCount());
+ Assert.assertEquals(2, l.mTestCount);
+ }
+
+ /**
+ * Test @Suppress in combination with size that filters out all methods, with super class.
+ */
+ @Test
+ public void testSuppress_withSizeAndSuper() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleJUnit3SuppressedWithSuper.class.getName());
+ b.addTestClass(SampleJUnit3Test.class.getName());
+ b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ MyRunListener l = new MyRunListener();
+ testRunner.addListener(l);
+ Result r = testRunner.run(request.getRequest());
+ Assert.assertEquals(2, r.getRunCount());
+ Assert.assertEquals(2, l.mTestCount);
+ }
+
+ /**
+ * Test @Suppress when all methods have been filtered
+ */
+ @Test
+ public void testSuppress_all() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleAllSuppressed.class.getName());
+ b.addTestClass(SampleJUnit3Suppressed.class.getName());
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ MyRunListener l = new MyRunListener();
+ testRunner.addListener(l);
+ Result r = testRunner.run(request.getRequest());
+ Assert.assertEquals(2, r.getRunCount());
+ Assert.assertEquals(2, l.mTestCount);
+ }
+
+ /**
+ * Test case where all methods are filtered out by combination of @Suppress and size when all
+ * methods have been filtered.
+ */
+ @Test
+ public void testSizeAndSuppress() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleSizeAndSuppress.class.getName());
+ b.addTestClass(SampleJUnit3Test.class.getName());
+ b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ MyRunListener l = new MyRunListener();
+ testRunner.addListener(l);
+ Result r = testRunner.run(request.getRequest());
+ Assert.assertEquals(2, r.getRunCount());
+ Assert.assertEquals(2, l.mTestCount);
+ }
+
+ /**
+ * Test case where method has both a size annotation and suppress annotation. Expect suppress
+ * to overrule the size.
+ */
+ @Test
+ public void testSizeWithSuppress() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestClass(SampleSizeWithSuppress.class.getName());
+ b.addTestClass(SampleJUnit3Test.class.getName());
+ b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ MyRunListener l = new MyRunListener();
+ testRunner.addListener(l);
+ Result r = testRunner.run(request.getRequest());
+ Assert.assertEquals(2, r.getRunCount());
+ Assert.assertEquals(2, l.mTestCount);
+ }
+
+ /**
+ * Test that annotation filtering by class works
+ */
+ @Test
+ public void testAddAnnotationInclusionFilter() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addAnnotationInclusionFilter(SmallTest.class.getName());
+ b.addTestClass(SampleTest.class.getName());
+ b.addTestClass(SampleClassSize.class.getName());
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result result = testRunner.run(request.getRequest());
+ Assert.assertEquals(3, result.getRunCount());
+ }
+
+ /**
+ * Test that annotation filtering by class works
+ */
+ @Test
+ public void testAddAnnotationExclusionFilter() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addAnnotationExclusionFilter(SmallTest.class.getName());
+ b.addTestClass(SampleTest.class.getName());
+ b.addTestClass(SampleClassSize.class.getName());
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result result = testRunner.run(request.getRequest());
+ Assert.assertEquals(1, result.getRunCount());
+ }
+
+ /**
+ * Test that annotation filtering by class works when methods are from superclass.
+ *
+ * TODO: add a similiar test to upstream junit.
+ */
+ @Test
+ public void testAddAnnotationInclusionFilter_super() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addAnnotationInclusionFilter(SmallTest.class.getName());
+ b.addTestClass(InheritedAnnnotation.class.getName());
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result result = testRunner.run(request.getRequest());
+ Assert.assertEquals(2, result.getRunCount());
+ }
+
+ /**
+ * Test that a method size annotation overrides a class size annotation.
+ */
+ @Test
+ public void testTestSizeFilter_override() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
+ b.addTestClass(SampleOverrideSize.class.getName());
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result result = testRunner.run(request.getRequest());
+ Assert.assertEquals(1, result.getRunCount());
+
+ b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestSizeFilter(TestRequestBuilder.MEDIUM_SIZE);
+ b.addTestClass(SampleOverrideSize.class.getName());
+ request = b.build(mInstr, mBundle);
+ testRunner = new JUnitCore();
+ result = testRunner.run(request.getRequest());
+ Assert.assertEquals(1, result.getRunCount());
+ }
+
+ /**
+ * Test that a method size annotation of same type as class level annotation is correctly
+ * filtered.
+ */
+ @Test
+ public void testTestSizeFilter_sameAnnotation() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addTestSizeFilter(TestRequestBuilder.SMALL_SIZE);
+ b.addTestClass(SampleSameSize.class.getName());
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result result = testRunner.run(request.getRequest());
+ Assert.assertEquals(1, result.getRunCount());
+ }
+
+ /**
+ * Test provided multiple annotations to exclude.
+ */
+ @Test
+ public void testTestSizeFilter_multipleNotAnnotation() {
+ TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
+ b.addAnnotationExclusionFilter(SmallTest.class.getName());
+ b.addAnnotationExclusionFilter(MediumTest.class.getName());
+ b.addTestClass(SampleMultipleAnnotation.class.getName());
+ TestRequest request = b.build(mInstr, mBundle);
+ JUnitCore testRunner = new JUnitCore();
+ Result result = testRunner.run(request.getRequest());
+ // expect 1 test that failed
+ Assert.assertEquals(1, result.getRunCount());
+ Assert.assertEquals("testRunThis",
+ result.getFailures().get(0).getDescription().getMethodName());
+ }
}