Android Open Source - masa Test Runner Core Provider






From Project

Back to project page masa.

License

The source code is released under:

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUC...

If you think the Android project masa listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.apache.maven.surefire.android;
//  w ww .  ja va  2  s .  co m
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

import org.apache.maven.plugin.surefire.StartupReportConfiguration;
import org.apache.maven.plugin.surefire.report.AndroidReportConfiguration;
import org.apache.maven.plugin.surefire.report.FileReporterFactory;
import org.apache.maven.surefire.android.reporting.AndroidReportEntry;
import org.apache.maven.surefire.providerapi.AbstractProvider;
import org.apache.maven.surefire.providerapi.ProviderParameters;
import org.apache.maven.surefire.report.ConsoleOutputReceiver;
import org.apache.maven.surefire.report.ReportEntry;
import org.apache.maven.surefire.report.ReporterException;
import org.apache.maven.surefire.report.ReporterFactory;
import org.apache.maven.surefire.report.RunListener;
import org.apache.maven.surefire.report.SimpleReportEntry;
import org.apache.maven.surefire.suite.RunResult;
import org.apache.maven.surefire.testset.TestSetFailedException;
import org.apache.maven.surefire.util.DirectoryScanner;
import org.apache.maven.surefire.util.TestsToRun;
import org.jvending.masa.ExecutionException;
import org.jvending.masa.ddmlib.AdbConnector;
import org.jvending.masa.ddmlib.ConnectionException;

import com.android.ddmlib.AdbCommandRejectedException;
import com.android.ddmlib.IDevice;
import com.android.ddmlib.ShellCommandUnresponsiveException;
import com.android.ddmlib.TimeoutException;
import com.android.ddmlib.testrunner.ITestRunListener;
import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
import com.android.ddmlib.testrunner.TestIdentifier;

public class TestRunnerCoreProvider extends AbstractProvider {

  private ProviderParameters providerParameters;

  public TestRunnerCoreProvider(ProviderParameters parameters) {
    this.providerParameters = parameters;
  }

  public Iterator<?> getSuites() {
    return scanClassPath().iterator();
  }

  public RunResult invoke(Object forkTestSet) throws TestSetFailedException,
      ReporterException {

    AdbConnector conn = new AdbConnector();
    IDevice device = null;
    try {
      conn.connectToDevice();
      device = conn.getFirstAttachedDevice();
    } catch (ConnectionException e) {
      e.printStackTrace();
    } catch (ShellCommandUnresponsiveException e) {
      e.printStackTrace();
    } catch (ExecutionException e) {
      e.printStackTrace();
    }

    StartupReportConfiguration rconfig = AndroidReportConfiguration
        .defaultValue(device);

    final ReporterFactory reporterFactory = new FileReporterFactory(rconfig);
    
    final RunListener reporter = reporterFactory.createReporter();
    // final ReporterFactory reporterFactory =
    // providerParameters.getReporterFactory();
    // final RunListener reporter = reporterFactory.createReporter();
    final ConsoleOutputReceiver console = (ConsoleOutputReceiver) reporter;

    Properties config = providerParameters.getProviderProperties();
    String testRunner = config.getProperty("testRunner",
        "android.test.InstrumentationTestRunner");
    String targetPackage = config.getProperty("targetPackage",
        "org.jvending.masa.test");

    RemoteAndroidTestRunner runner = new RemoteAndroidTestRunner(
        targetPackage, testRunner, device);
    runner.setTestPackageName("org.jvending.masa.test");

    try {
      runner.run(new ITestRunListener() {

        private AndroidReportEntry entry;

        private AndroidReportEntry runEntry;

        private boolean hasError;

        public void testRunStarted(String runName, int testCount) {
          runEntry = new AndroidReportEntry(runName, runName);
          reporter.testSetStarting(runEntry);
        }

        public void testStarted(TestIdentifier test) {
          if ("testAndroidTestCaseSetupProperly".equals(test
              .getTestName())) {
            return;
          }
          hasError = false;
          entry = new AndroidReportEntry(test.getClassName(), test
              .getTestName());

          reporter.testStarting(entry);
        }

        public void testFailed(TestFailure status, TestIdentifier test,
            String trace) {
          if ("testAndroidTestCaseSetupProperly".equals(test
              .getTestName())) {
            return;
          }
          hasError = true;
          if (trace != null) {
            console.writeTestOutput(trace.getBytes(), 0,
                trace.length() - 1, true);
            entry.setMessage(trace);
          }
          reporter.testFailed(entry);
        }

        public void testEnded(TestIdentifier test,
            Map<String, String> testMetrics) {
          if ("testAndroidTestCaseSetupProperly".equals(test
              .getTestName())) {
            return;
          }
;
          if (!hasError) {
            reporter.testSucceeded(entry);
          }
          hasError = false;
        }

        public void testRunFailed(String errorMessage) {
        }

        public void testRunStopped(long elapsedTime) {
          reporter.testSetCompleted(runEntry);
        }

        public void testRunEnded(long elapsedTime,
            Map<String, String> runMetrics) {
          reporter.testSetCompleted(runEntry);
        }

      });
    } catch (TimeoutException e) {
      e.printStackTrace();
    } catch (AdbCommandRejectedException e) {
      e.printStackTrace();
    } catch (ShellCommandUnresponsiveException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }

    return reporterFactory.close();

  }

  private TestsToRun scanClassPath() {
    ClassLoader testClassLoader = providerParameters.getTestClassLoader();
    DirectoryScanner directoryScanner = providerParameters
        .getDirectoryScanner();

    final TestsToRun scanned = directoryScanner.locateTestClasses(
        testClassLoader, null);
    return scanned;
    // return runOrderCalculator.orderTestClasses(scanned);
  }

}




Java Source Code List

org.apache.maven.plugin.surefire.report.AndroidReportConfiguration.java
org.apache.maven.plugin.surefire.report.AndroidXmlReporter.java
org.apache.maven.surefire.android.TestRunnerCoreProvider.java
org.apache.maven.surefire.android.reporting.AndroidReportEntry.java
org.jvending.masa.ApkInstaller.java
org.jvending.masa.ApplicationRequirements.java
org.jvending.masa.CommandExecutor.java
org.jvending.masa.ExecutionException.java
org.jvending.masa.MasaUtil.java
org.jvending.masa.ddmlib.AdbConnector.java
org.jvending.masa.ddmlib.ConnectionException.java
org.jvending.masa.plugin.aapt.AaptCompilerMojo.java
org.jvending.masa.plugin.aapt.AaptPackagerMojo.java
org.jvending.masa.plugin.aapt.LibraryPackagerMojo.java
org.jvending.masa.plugin.aapt.LibraryResourceProcessorMojo.java
org.jvending.masa.plugin.adb.DeviceInstallerMojo.java
org.jvending.masa.plugin.adb.DevicePullerMojo.java
org.jvending.masa.plugin.adb.DevicePusherMojo.java
org.jvending.masa.plugin.aidl.AidlGeneratorMojo.java
org.jvending.masa.plugin.apkbuilder.ApkBuilderMojo.java
org.jvending.masa.plugin.apkbuilder.ApkVerifierMojo.java
org.jvending.masa.plugin.apkbuilder.KeystoreInfo.java
org.jvending.masa.plugin.apkbuilder.NativeLibraries.java
org.jvending.masa.plugin.apkbuilder.PrivateKeyInfo.java
org.jvending.masa.plugin.apkbuilder.X509Cert.java
org.jvending.masa.plugin.dx.DxMojo.java
org.jvending.masa.plugin.jarsigner.JarSignerMojo.java
org.jvending.masa.plugin.lint.LintMojo.java
org.jvending.masa.plugin.localization.CopyResourcesMojo.java
org.jvending.masa.plugin.platformtest.ApkInstallerMojo.java
org.jvending.masa.plugin.platformtest.PlatformTesterMojo.java
org.jvending.masa.plugin.proguard.ProguardMojo.java
org.jvending.masa.plugin.zipalign.ZipAlignMojo.java
org.jvending.masa.plugins.toolchains.Capability.java
org.jvending.masa.plugins.toolchains.Matcher.java
org.jvending.masa.plugins.toolchains.ToolchainMojo.java
org.jvending.masa.plugins.toolchains.Toolchains.java
org.maven.reslinks.plugin.ResourceLinkerMojo.java
${package}.App.java