Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2659)

Unified Diff: base/test/android/javatests/src/org/chromium/base/test/BaseChromiumAndroidJUnitRunner.java

Issue 2935503002: List Java Instru Test Information From JUnit Runner (Closed)
Patch Set: List tests from Android Instrumentation test runner Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/test/android/javatests/src/org/chromium/base/test/BaseChromiumAndroidJUnitRunner.java
diff --git a/base/test/android/javatests/src/org/chromium/base/test/BaseChromiumAndroidJUnitRunner.java b/base/test/android/javatests/src/org/chromium/base/test/BaseChromiumAndroidJUnitRunner.java
index a48c4ab71301190bef89adf33a2a056832068600..3c549ce8b78b9948da96df719b17291de4cb57ed 100644
--- a/base/test/android/javatests/src/org/chromium/base/test/BaseChromiumAndroidJUnitRunner.java
+++ b/base/test/android/javatests/src/org/chromium/base/test/BaseChromiumAndroidJUnitRunner.java
@@ -4,10 +4,18 @@
package org.chromium.base.test;
+import android.app.Activity;
import android.app.Application;
+import android.app.Instrumentation;
import android.content.Context;
+import android.os.Bundle;
+import android.support.test.internal.runner.RunnerArgs;
+import android.support.test.internal.runner.TestExecutor;
+import android.support.test.internal.runner.TestRequest;
+import android.support.test.internal.runner.TestRequestBuilder;
import android.support.test.runner.AndroidJUnitRunner;
+import org.chromium.base.Log;
import org.chromium.base.multidex.ChromiumMultiDexInstaller;
/**
@@ -18,6 +26,10 @@ import org.chromium.base.multidex.ChromiumMultiDexInstaller;
* <instrumentation>
*/
public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
+ private Bundle mArguments;
+ private static final String LIST_ALL_TESTS_FLAG = "listAllTests";
+ private static final String TAG = "BaseJUnitRunner";
+
@Override
public Application newApplication(ClassLoader cl, String className, Context context)
throws ClassNotFoundException, IllegalAccessException, InstantiationException {
@@ -26,4 +38,46 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
BaseChromiumRunnerCommon.reorderDexPathElements(cl, getContext(), getTargetContext());
return super.newApplication(cl, className, context);
}
+
+ @Override
+ public void onCreate(Bundle arguments) {
+ super.onCreate(arguments);
+ mArguments = arguments;
+ }
+
+ @Override
+ public void onStart() {
+ if (getListTestFlag(mArguments) != null) {
+ Bundle results = new Bundle();
+ try {
+ TestExecutor.Builder executorBuilder = new TestExecutor.Builder(this);
+ executorBuilder.addRunListener(new TestListInstrumentationRunListener(
+ getListTestFlag(mArguments).toString()));
+ TestRequest listTestRequest = createListTestRequest(mArguments);
+ results = executorBuilder.build().execute(listTestRequest);
mikecase (-- gone --) 2017/07/11 21:14:51 can you explain how this works? How did you make t
the real yoland 2017/07/14 03:15:46 I am using the AndroidJUnitRunner's provided featu
+ } catch (RuntimeException e) {
mikecase (-- gone --) 2017/07/11 21:14:51 Should we actually be catching this? Will the exce
the real yoland 2017/07/14 03:15:46 The failure stack trace will show up in the host s
+ final String msg = "Fatal exception when running tests";
+ Log.e(TAG, msg, e);
+ // report the exception to instrumentation out
+ results.putString(Instrumentation.REPORT_KEY_STREAMRESULT,
+ msg + "\n" + Log.getStackTraceString(e));
+ }
+ finish(Activity.RESULT_OK, results);
+ } else {
+ super.onStart();
+ }
+ }
+
+ private TestRequest createListTestRequest(Bundle arguments) {
+ RunnerArgs runnerArgs =
+ new RunnerArgs.Builder().fromManifest(this).fromBundle(arguments).build();
+ TestRequestBuilder builder = new TestRequestBuilder(this, arguments);
+ builder.addApkToScan(getContext().getPackageCodePath());
+ builder.addFromRunnerArgs(runnerArgs);
+ return builder.build();
+ }
+
+ private static CharSequence getListTestFlag(Bundle arguments) {
+ return arguments != null ? arguments.getCharSequence(LIST_ALL_TESTS_FLAG) : null;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698