diff options
author | Brett Chabot <brettchabot@google.com> | 2014-02-03 18:35:35 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-02-03 18:35:36 +0000 |
commit | 1b187d8791269666045f1f32c548b41c1f4093c5 (patch) | |
tree | f65c4957dc0a686e31aaaeb597c2fbd079fdf384 | |
parent | e696b968bfe7521fe8c6623dbc466adb9b4302c9 (diff) | |
parent | 5cfc27f62f1d05b95d0432916beba7037edeeabf (diff) | |
download | testing-1b187d8791269666045f1f32c548b41c1f4093c5.tar.gz |
Merge "Tweak -e suiteAssignment mode."
4 files changed, 70 insertions, 21 deletions
diff --git a/support/src/android/support/test/internal/runner/junit3/JUnit38ClassRunner.java b/support/src/android/support/test/internal/runner/junit3/JUnit38ClassRunner.java index 268390b..10b46a4 100644 --- a/support/src/android/support/test/internal/runner/junit3/JUnit38ClassRunner.java +++ b/support/src/android/support/test/internal/runner/junit3/JUnit38ClassRunner.java @@ -56,21 +56,16 @@ public class JUnit38ClassRunner extends Runner implements Filterable, Sortable { Describable facade = (Describable) test; return facade.getDescription(); } - return Description.createTestDescription(getEffectiveClass(test), getName(test)); + if (test instanceof TestCase) { + return makeDescription(test); + } + return Description.createTestDescription(getEffectiveClass(test), test.toString()); } private Class<? extends Test> getEffectiveClass(Test test) { return test.getClass(); } - private String getName(Test test) { - if (test instanceof TestCase) { - return ((TestCase) test).getName(); - } else { - return test.toString(); - } - } - @Override public void addFailure(Test test, AssertionFailedError t) { addError(test, t); diff --git a/support/src/android/support/test/internal/runner/listener/InstrumentationRunListener.java b/support/src/android/support/test/internal/runner/listener/InstrumentationRunListener.java index f584677..5785cfc 100644 --- a/support/src/android/support/test/internal/runner/listener/InstrumentationRunListener.java +++ b/support/src/android/support/test/internal/runner/listener/InstrumentationRunListener.java @@ -46,6 +46,15 @@ public abstract class InstrumentationRunListener extends RunListener { } /** + * Convenience method to output a string on instrumentation output + */ + public void sendString(String msg) { + Bundle b = new Bundle(); + b.putString(Instrumentation.REPORT_KEY_STREAMRESULT, msg); + sendStatus(0, b); + } + + /** * Optional callback subclasses can implement. Will be called when instrumentation run * completes. * diff --git a/support/src/android/support/test/internal/runner/listener/SuiteAssignmentPrinter.java b/support/src/android/support/test/internal/runner/listener/SuiteAssignmentPrinter.java index c636f7f..5d77935 100644 --- a/support/src/android/support/test/internal/runner/listener/SuiteAssignmentPrinter.java +++ b/support/src/android/support/test/internal/runner/listener/SuiteAssignmentPrinter.java @@ -16,20 +16,22 @@ package android.support.test.internal.runner.listener; +import android.app.Instrumentation; import android.support.test.internal.runner.TestRequestBuilder; +import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.MediumTest; +import android.test.suitebuilder.annotation.SmallTest; +import android.util.Log; import org.junit.runner.Description; import org.junit.runner.notification.Failure; -import org.junit.runner.notification.RunListener; - -import java.io.PrintStream; /** * This class measures the elapsed run time of each test, and used it to report back to the user * which suite ({@link SmallSuite}, {@link MediumSuite}, {@link LargeSuite}) the test should belong * to. */ -public class SuiteAssignmentPrinter extends RunListener { +public class SuiteAssignmentPrinter extends InstrumentationRunListener { /** * This constant defines the maximum allowed runtime (in ms) for a test included in the "small" * suite. It is used to make an educated guess at what suite an unlabeled test belongs to. @@ -42,10 +44,8 @@ public class SuiteAssignmentPrinter extends RunListener { */ private static final float MEDIUM_SUITE_MAX_RUNTIME = 1000; - private final PrintStream mWriter; - - public SuiteAssignmentPrinter(PrintStream writer) { - mWriter = writer; + public SuiteAssignmentPrinter(Instrumentation i) { + super(i); } private long mStartTime; @@ -79,9 +79,54 @@ public class SuiteAssignmentPrinter extends RunListener { // Clear mStartTime so that we can verify that it gets set next time. mStartTime = -1; - mWriter.printf("%s#%s\n" + "in %s suite\n" + "runTime: %d ms\n", - description.getClassName(), description.getMethodName(), assignmentSuite, - runTime); + String currentSize = getTestSize(description); + if (!assignmentSuite.equals(currentSize)) { + // test size != runtime + sendString(String.format("\n%s#%s: current size: %s. suggested: %s runTime: %d ms\n", + description.getClassName(), description.getMethodName(), currentSize, + assignmentSuite, runTime)); + } else { + sendString("."); + Log.d("SuiteAssignmentPrinter", String.format( + "%s#%s assigned correctly as %s. runTime: %d ms\n", description.getClassName(), + description.getMethodName(), assignmentSuite, runTime)); + } + + } + + private String getTestSize(Description description) { + String testSize = getTestSizeFromMethod(description); + if (testSize != null) { + return testSize; + } + return getTestSizeFromClass(description); + } + + String getTestSizeFromMethod(Description desc) { + if (desc.getAnnotation(SmallTest.class) != null) { + return TestRequestBuilder.SMALL_SIZE; + } else if (desc.getAnnotation(MediumTest.class) != null) { + return TestRequestBuilder.MEDIUM_SIZE; + } else if (desc.getAnnotation(LargeTest.class) != null) { + return TestRequestBuilder.LARGE_SIZE; + } + return null; + + } + + String getTestSizeFromClass(Description desc) { + Class<?> testClass = desc.getTestClass(); + if (testClass == null) { + return null; + } + if (testClass.isAnnotationPresent(SmallTest.class)) { + return TestRequestBuilder.SMALL_SIZE; + } else if (testClass.isAnnotationPresent(MediumTest.class)) { + return TestRequestBuilder.MEDIUM_SIZE; + } else if (testClass.isAnnotationPresent(LargeTest.class)) { + return TestRequestBuilder.LARGE_SIZE; + } + return null; } @Override diff --git a/support/src/android/support/test/runner/AndroidJUnitRunner.java b/support/src/android/support/test/runner/AndroidJUnitRunner.java index 9179519..f3c0ceb 100644 --- a/support/src/android/support/test/runner/AndroidJUnitRunner.java +++ b/support/src/android/support/test/runner/AndroidJUnitRunner.java @@ -238,7 +238,7 @@ public class AndroidJUnitRunner extends Instrumentation { private void addListeners(List<RunListener> listeners, JUnitCore testRunner, PrintStream writer) { if (getBooleanArgument(ARGUMENT_SUITE_ASSIGNMENT)) { - addListener(listeners, testRunner, new SuiteAssignmentPrinter(writer)); + addListener(listeners, testRunner, new SuiteAssignmentPrinter(this)); } else { addListener(listeners, testRunner, new TextListener(writer)); addListener(listeners, testRunner, new LogRunListener()); |