public async void Can_Run_Tests()
        {
            var logger = new ConsoleLogger();
            Guid emuId = Guid.NewGuid();

            // Start an emulator.
            var adbFactory = new AndroidDebugBridgeFactory(TestConfig.PathToAdbExe);
            int consolePort = 5554;
            var emuFactory = new AndroidSdkEmulatorFactory(logger, TestConfig.PathToAndroidEmulatorExe, adbFactory, TestConfig.AvdName, consolePort, true, false, emuId);

            using (IEmulator droidEmulator = emuFactory.GetEmulator())
            {
                await droidEmulator.Start(TestConfig.EmulatorStartupTimeout).ContinueWith((t) =>
                {

                    if (t.IsFaulted)
                    {
                        throw t.Exception;
                    }

                    var adb = adbFactory.GetAndroidDebugBridge();

                    // install tests apk
                    var currentDir = Environment.CurrentDirectory;
                    var apkPath = System.IO.Path.Combine(currentDir, "..\\..\\..\\", TestConfig.PathToAndroidTestsApk);
                    adb.Install(droidEmulator.Device, apkPath, AdbInstallFlags.ReplaceExistingApplication);

                    // sut
                    var testRunner = new AndroidTestRunner(logger, adbFactory, droidEmulator.Device, TestConfig.AndroidTestsPackageName, TestConfig.AndroidTestsInstrumentationClassPath);
                    var testResults = testRunner.RunTests();

                    Assert.That(testResults, Is.Not.Null);
                    var tests = testResults.GetTests().ToList();
                    var failedTests = tests.Where(a => a.Kind == TestResultKind.Failure);

                    foreach (var a in failedTests)
                    {
                        logger.LogMessage(string.Format("{0} - ", a.Name, a.StackTrace));
                    }

                });

            }

        }
        public async void Can_Report_Tests_To_Default_Reporter()
        {
            var logger = new ConsoleLogger();
            Guid emuId = Guid.NewGuid();

            // Start an emulator.
            var adbFactory = new AndroidDebugBridgeFactory(TestConfig.PathToAdbExe);
            int consolePort = 5554;
            var emuFactory = new AndroidSdkEmulatorFactory(logger, TestConfig.PathToAndroidEmulatorExe, adbFactory, TestConfig.AvdName, consolePort, true, false, emuId);

            using (IEmulator droidEmulator = emuFactory.GetEmulator())
            {
                await droidEmulator.Start(TestConfig.EmulatorStartupTimeout).ContinueWith((t) =>
                {

                    if (t.IsFaulted)
                    {
                        throw t.Exception;
                    }

                    var adb = adbFactory.GetAndroidDebugBridge();

                    // install tests apk
                    var currentDir = Environment.CurrentDirectory;
                    var apkPath = System.IO.Path.Combine(currentDir, "..\\..\\..\\", TestConfig.PathToAndroidTestsApk);
                    adb.Install(droidEmulator.Device, apkPath, AdbInstallFlags.ReplaceExistingApplication);

                    // sut
                    IProgressReporter progressReporter = new DefaultProgressReporter(Console.WriteLine);
                    progressReporter.ReportTestsStarted(TestConfig.AndroidTestsPackageName);
                    var testRunner = new AndroidTestRunner(logger, adbFactory, droidEmulator.Device, TestConfig.AndroidTestsPackageName, TestConfig.AndroidTestsInstrumentationClassPath);
                    var testResults = testRunner.RunTests();
                    Assert.That(testResults, Is.Not.Null);

                    progressReporter.ReportTests(testResults);
                    progressReporter.ReportTestsFinished(TestConfig.AndroidTestsPackageName);
                    return testResults;

                });

            }

        }