public class

UiAutomatorInstrumentationTestRunner

extends InstrumentationTestRunner

 java.lang.Object

↳InstrumentationTestRunner

↳androidx.test.uiautomator.UiAutomatorInstrumentationTestRunner

Gradle dependencies

compile group: 'androidx.test.uiautomator', name: 'uiautomator', version: '2.2.0'

  • groupId: androidx.test.uiautomator
  • artifactId: uiautomator
  • version: 2.2.0

Artifact androidx.test.uiautomator:uiautomator:2.2.0 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.test.uiautomator:uiautomator com.android.support.test.uiautomator:uiautomator

Androidx class mapping:

androidx.test.uiautomator.UiAutomatorInstrumentationTestRunner android.support.test.uiautomator.UiAutomatorInstrumentationTestRunner

Overview

Test runner for UiAutomatorTestCases. Such tests are executed on the device and have access to an applications context.

Summary

Constructors
publicUiAutomatorInstrumentationTestRunner()

Methods
protected AndroidTestRunnergetAndroidTestRunner()

protected voidinitializeUiAutomatorTest(UiAutomatorTestCase test)

Perform initialization specific to UiAutomator test.

public voidonStart()

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public UiAutomatorInstrumentationTestRunner()

Methods

public void onStart()

protected void initializeUiAutomatorTest(UiAutomatorTestCase test)

Perform initialization specific to UiAutomator test. It sets up the test case so that it can access the UiDevice and gives it access to the command line arguments.

Parameters:

test: UiAutomatorTestCase to initialize.

protected AndroidTestRunner getAndroidTestRunner()

Source

/*
 * Copyright (C) 2013 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.test.uiautomator;

import android.test.AndroidTestRunner;
import android.test.InstrumentationTestRunner;

import junit.framework.AssertionFailedError;
import junit.framework.Test;
import junit.framework.TestListener;

/**
 * Test runner for {@link UiAutomatorTestCase}s. Such tests are executed
 * on the device and have access to an applications context.
 */
public class UiAutomatorInstrumentationTestRunner extends InstrumentationTestRunner {

    @Override
    public void onStart() {
        // process runner arguments before test starts
        String traceType = getArguments().getString("traceOutputMode");
        if(traceType != null) {
            Tracer.Mode mode = Tracer.Mode.valueOf(Tracer.Mode.class, traceType);
            if (mode == Tracer.Mode.FILE || mode == Tracer.Mode.ALL) {
                String filename = getArguments().getString("traceLogFilename");
                if (filename == null) {
                    throw new RuntimeException("Name of log file not specified. " +
                            "Please specify it using traceLogFilename parameter");
                }
                Tracer.getInstance().setOutputFilename(filename);
            }
            Tracer.getInstance().setOutputMode(mode);
        }
        super.onStart();
    }


    /**
     * Perform initialization specific to UiAutomator test. It sets up the test case so that
     * it can access the UiDevice and gives it access to the command line arguments.
     * @param test UiAutomatorTestCase to initialize.
     */
    protected void initializeUiAutomatorTest(UiAutomatorTestCase test) {
        test.initialize(getArguments());
    }

    @Override
    protected AndroidTestRunner getAndroidTestRunner() {
        AndroidTestRunner testRunner = super.getAndroidTestRunner();
        testRunner.addTestListener(new TestListener() {
            @Override
            public void startTest(Test test) {
                if (test instanceof UiAutomatorTestCase) {
                    initializeUiAutomatorTest((UiAutomatorTestCase)test);
                }
            }

            @Override
            public void endTest(Test test) {
            }

            @Override
            public void addFailure(Test test, AssertionFailedError e) {
            }

            @Override
            public void addError(Test test, Throwable t) {
            }
        });
        return testRunner;
    }
}