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

Side by Side 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: address nyquist comments Created 3 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.base.test; 5 package org.chromium.base.test;
6 6
7 import android.app.Activity;
7 import android.app.Application; 8 import android.app.Application;
9 import android.app.Instrumentation;
8 import android.content.Context; 10 import android.content.Context;
11 import android.os.Bundle;
12 import android.support.test.internal.runner.RunnerArgs;
13 import android.support.test.internal.runner.TestExecutor;
14 import android.support.test.internal.runner.TestRequest;
15 import android.support.test.internal.runner.TestRequestBuilder;
9 import android.support.test.runner.AndroidJUnitRunner; 16 import android.support.test.runner.AndroidJUnitRunner;
10 17
18 import org.chromium.base.Log;
11 import org.chromium.base.multidex.ChromiumMultiDexInstaller; 19 import org.chromium.base.multidex.ChromiumMultiDexInstaller;
12 20
13 /** 21 /**
14 * A custom AndroidJUnitRunner that supports multidex installer. 22 * A custom AndroidJUnitRunner that supports multidex installer and list out tes t information.
15 * 23 *
16 * This class is the equivalent of BaseChromiumInstrumentationTestRunner in JUni t3. Please 24 * This class is the equivalent of BaseChromiumInstrumentationTestRunner in JUni t3. Please
17 * beware that is this not a class runner. It is declared in test apk AndroidMan ifest.xml 25 * beware that is this not a class runner. It is declared in test apk AndroidMan ifest.xml
18 * <instrumentation> 26 * <instrumentation>
19 */ 27 */
20 public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner { 28 public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
29 private static final String LIST_ALL_TESTS_FLAG =
30 "org.chromium.base.test.BaseChromiumAndroidJUnitRunner.TestList";
31 private static final String TAG = "BaseJUnitRunner";
32
33 private Bundle mArguments;
34
21 @Override 35 @Override
22 public Application newApplication(ClassLoader cl, String className, Context context) 36 public Application newApplication(ClassLoader cl, String className, Context context)
23 throws ClassNotFoundException, IllegalAccessException, Instantiation Exception { 37 throws ClassNotFoundException, IllegalAccessException, Instantiation Exception {
24 ChromiumMultiDexInstaller.install(new BaseChromiumRunnerCommon.MultiDexC ontextWrapper( 38 ChromiumMultiDexInstaller.install(new BaseChromiumRunnerCommon.MultiDexC ontextWrapper(
25 getContext(), getTargetContext())); 39 getContext(), getTargetContext()));
26 BaseChromiumRunnerCommon.reorderDexPathElements(cl, getContext(), getTar getContext()); 40 BaseChromiumRunnerCommon.reorderDexPathElements(cl, getContext(), getTar getContext());
27 return super.newApplication(cl, className, context); 41 return super.newApplication(cl, className, context);
28 } 42 }
43
44 @Override
45 public void onCreate(Bundle arguments) {
46 super.onCreate(arguments);
47 mArguments = arguments;
48 }
49
50 /**
51 * Add TestListInstrumentationRunListener when argument ask the runner to li st tests info.
52 *
53 * The running mechanism when argument has "listAllTests" is equivalent to t hat of
54 * {@link android.support.test.runner.AndroidJUnitRunner#onStart()} except i t adds
55 * only TestListInstrumentationRunListener to monitor the tests.
56 */
57 @Override
58 public void onStart() {
59 if (mArguments != null && mArguments.getString(LIST_ALL_TESTS_FLAG) != n ull) {
60 Log.w(TAG, "Runner will list out tests info in JSON without running tests");
61 listTests(); // Intentionally not calling super.onStart() to avoid a dditional work.
62 } else {
63 super.onStart();
64 }
65 }
66
67 private void listTests() {
68 Bundle results = new Bundle();
69 try {
70 TestExecutor.Builder executorBuilder = new TestExecutor.Builder(this );
71 executorBuilder.addRunListener(new TestListInstrumentationRunListene r(
72 mArguments.getString(LIST_ALL_TESTS_FLAG)));
73 TestRequest listTestRequest = createListTestRequest(mArguments);
74 results = executorBuilder.build().execute(listTestRequest);
75 } catch (RuntimeException e) {
76 String msg = "Fatal exception when running tests";
77 Log.e(TAG, msg, e);
78 // report the exception to instrumentation out
79 results.putString(Instrumentation.REPORT_KEY_STREAMRESULT,
80 msg + "\n" + Log.getStackTraceString(e));
81 }
82 finish(Activity.RESULT_OK, results);
83 }
84
85 private TestRequest createListTestRequest(Bundle arguments) {
86 RunnerArgs runnerArgs =
87 new RunnerArgs.Builder().fromManifest(this).fromBundle(arguments ).build();
88 TestRequestBuilder builder = new TestRequestBuilder(this, arguments);
89 builder.addApkToScan(getContext().getPackageCodePath());
90 builder.addFromRunnerArgs(runnerArgs);
91 return builder.build();
92 }
29 } 93 }
OLDNEW
« no previous file with comments | « base/BUILD.gn ('k') | base/test/android/javatests/src/org/chromium/base/test/TestListInstrumentationRunListener.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698