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

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: change proguard flags for cronets targets 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 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 Bundle mArguments;
nyquist 2017/07/26 17:25:07 non-static member should go after static members
the real yoland 2017/07/26 18:02:33 Done
30 private static final String LIST_ALL_TESTS_FLAG =
31 "org.chromium.base.test.BaseChromiumAndroidJUnitRunner.TestList";
32 private static final String TAG = "BaseJUnitRunner";
33
21 @Override 34 @Override
22 public Application newApplication(ClassLoader cl, String className, Context context) 35 public Application newApplication(ClassLoader cl, String className, Context context)
23 throws ClassNotFoundException, IllegalAccessException, Instantiation Exception { 36 throws ClassNotFoundException, IllegalAccessException, Instantiation Exception {
24 ChromiumMultiDexInstaller.install(new BaseChromiumRunnerCommon.MultiDexC ontextWrapper( 37 ChromiumMultiDexInstaller.install(new BaseChromiumRunnerCommon.MultiDexC ontextWrapper(
25 getContext(), getTargetContext())); 38 getContext(), getTargetContext()));
26 BaseChromiumRunnerCommon.reorderDexPathElements(cl, getContext(), getTar getContext()); 39 BaseChromiumRunnerCommon.reorderDexPathElements(cl, getContext(), getTar getContext());
27 return super.newApplication(cl, className, context); 40 return super.newApplication(cl, className, context);
28 } 41 }
42
43 @Override
44 public void onCreate(Bundle arguments) {
45 super.onCreate(arguments);
46 mArguments = arguments;
47 }
48
49 /**
50 * Add TestListInstrumentationRunListener when argument ask the runner to li st tests info.
51 *
52 * The running mechanism when argument has "listAllTests" is equivalent to t hat of
53 * {@link android.support.test.runner.AndroidJUnitRunner#onStart()} except i t adds
54 * only TestListInstrumentationRunListener to monitor the tests.
55 */
56 @Override
57 public void onStart() {
58 if (mArguments != null && mArguments.getString(LIST_ALL_TESTS_FLAG) != n ull) {
59 listTests();
nyquist 2017/07/26 17:25:07 Instead of doing the else-statement here, do you t
the real yoland 2017/07/26 18:02:33 Done
60 } else {
61 super.onStart();
62 }
63 }
64
65 private void listTests() {
66 Bundle results = new Bundle();
67 try {
68 TestExecutor.Builder executorBuilder = new TestExecutor.Builder(this );
69 executorBuilder.addRunListener(new TestListInstrumentationRunListene r(
70 mArguments.getString(LIST_ALL_TESTS_FLAG)));
71 TestRequest listTestRequest = createListTestRequest(mArguments);
72 results = executorBuilder.build().execute(listTestRequest);
73 } catch (RuntimeException e) {
74 final String msg = "Fatal exception when running tests";
nyquist 2017/07/26 17:25:07 Nit: Unnecessary final
the real yoland 2017/07/26 18:02:33 Done
75 Log.e(TAG, msg, e);
76 // report the exception to instrumentation out
77 results.putString(Instrumentation.REPORT_KEY_STREAMRESULT,
78 msg + "\n" + Log.getStackTraceString(e));
79 }
80 finish(Activity.RESULT_OK, results);
81 }
82
83 private TestRequest createListTestRequest(Bundle arguments) {
84 RunnerArgs runnerArgs =
85 new RunnerArgs.Builder().fromManifest(this).fromBundle(arguments ).build();
86 TestRequestBuilder builder = new TestRequestBuilder(this, arguments);
87 builder.addApkToScan(getContext().getPackageCodePath());
88 builder.addFromRunnerArgs(runnerArgs);
89 return builder.build();
90 }
29 } 91 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698