Пример #1
0
        protected virtual void PublishResults(TestResult testResults)
        {
            TestResultsConfig.PrintConfig();

            Log.Info(this.tag, "Publishing results : " + DateTime.Now +
                     "\nTotal count : {0}, Failed : {1}",
                     testResults.AssertCount,
                     testResults.FailCount);

            if (TestResultsConfig.IsRemote)
            {
                switch (TestResultsConfig.TestsResultsFormat)
                {
                case "plain_text":
                    //          We already published test results because in this case we publish each test results separately. See SetTextWriterForAndroidTestRunner() method.
                    return;

                case "nunit2":
                    var nunit2Writer = new NUnit2XmlOutputWriter(this.testsStartTime);
                    var tcpwriter    = this.NetworkWriter;

                    nunit2Writer.WriteResultFile(testResults, tcpwriter);
                    tcpwriter.Close();

                    Log.Info(this.tag, "Published tests results in nunit2 format");
                    return;

                case "nunit3":
                    var nunit3Writer   = new NUnit3XmlOutputWriter(this.testsStartTime);
                    var newtworkWriter = this.NetworkWriter;

                    nunit3Writer.WriteResultFile(testResults, newtworkWriter);
                    newtworkWriter.Close();

                    Log.Info(this.tag, "Published tests results in nunit3 format");
                    return;
                }
            }
            else
            {
                //      If we don't need to send test results to remote server, just return.
                return;
            }
        }
Пример #2
0
        public override string WriteResultsToFile()
        {
            if (results == null)
            {
                return(String.Empty);
            }

            string ret = GetResultsFilePath();

            if (String.IsNullOrEmpty(ret))
            {
                return(String.Empty);
            }

            var resultsXml = new NUnit2XmlOutputWriter(DateTime.UtcNow);

            resultsXml.WriteResultFile(results, ret);

            return(ret);
        }
Пример #3
0
        public void CloseWriter()
        {
            if (Writer == null)
            {
                return;
            }

            var outputWriter = new NUnit2XmlOutputWriter();
            var tempFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "output.xml");

            outputWriter.WriteResultFile(TestResult, tempFilePath);
            var data = File.ReadAllBytes(tempFilePath);

            var tcpTextWriter = Writer as TcpTextWriter;

            if (tcpTextWriter != null)
            {
                tcpTextWriter.Write(data, 0, data.Length);
            }
            Writer.Close();
            Writer = null;
        }
Пример #4
0
        public void CloseWriter()
        {
            var outputWriter = new NUnit2XmlOutputWriter();
            var tempFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "output.xml");

            outputWriter.WriteResultFile(TestResult, tempFilePath);
            var data = File.ReadAllBytes(tempFilePath);

            if (Writer is TcpTextWriter)
            {
                (Writer as TcpTextWriter).Write(data, 0, data.Length);

                Writer.Close();
            }
            else
            {
                int total = passed + inconclusive + failed;                 // ignored are *not* run
                Writer.WriteLine("Tests run: {0} Passed: {1} Inconclusive: {2} Failed: {3} Ignored: {4}", total, passed, inconclusive, failed, ignored);
            }

            Writer = null;
        }
Пример #5
0
        public override void OnStart()
        {
            base.OnStart();

            AddTests();

            AndroidRunner.Runner.Options.LoadFromBundle(arguments);
            AndroidRunner.Runner.AddTestFilters(GetIncludedCategories(), GetExcludedCategories());

            AndroidRunner.Runner.Initialized = true;
            var results = new Bundle();
            int failed  = 0;

            try {
                Log.Info(TAG, "NUnit automated tests started");
                var testResult  = AndroidRunner.Runner.Run(AndroidRunner.GetSetupTestTarget(arguments), TargetContext);
                var resultsFile = GetResultsPath();
                if (resultsFile != null)
                {
                    var startTime  = DateTime.Now;
                    var resultsXml = new NUnit2XmlOutputWriter(startTime);
                    resultsXml.WriteResultFile(testResult, resultsFile);
                    results.PutString("nunit2-results-path", ToAdbPath(resultsFile));
                }
                Log.Info(TAG, "NUnit automated tests completed");
                int passed = 0, skipped = 0, inconclusive = 0;
                foreach (TestResult result in AndroidRunner.Results.Values)
                {
                    if (result.HasChildren)
                    {
                        continue;
                    }
                    inconclusive += result.InconclusiveCount;
                    failed       += result.FailCount;
                    passed       += result.PassCount;
                    skipped      += result.SkipCount;
                    if (result.FailCount > 0)
                    {
                        Log.Error(TAG, "Test '{0}' failed: {1}", result.FullName, result.Message);
                        // Avoid Java.Lang.NullPointerException: println needs a message
                        if (!String.IsNullOrEmpty(result.StackTrace))
                        {
                            Log.Error(TAG, result.StackTrace);
                        }
                        results.PutString("failure: " + result.FullName,
                                          result.Message + "\n" + result.StackTrace);
                        Log.Error(TAG, "  ");                          // makes it easier to read the failures in logcat output
                    }
                }
                results.PutInt("passed", passed);
                results.PutInt("failed", failed);
                results.PutInt("skipped", skipped);
                results.PutInt("inconclusive", inconclusive);
                string message = string.Format("Passed: {0}, Failed: {1}, Skipped: {2}, Inconclusive: {3}",
                                               passed, failed, skipped, inconclusive);
                Log.Info(TAG, message);
            } catch (Exception e) {
                Log.Error(TAG, "Error: {0}", e);
                results.PutString("error", e.ToString());
            }
            Finish(failed == 0 ? Result.Ok : Result.Canceled, results);
        }
Пример #6
0
        /// <summary>
        /// Write the result of a test run according to a spec.
        /// </summary>
        /// <param name="result">The test result</param>
        /// <param name="spec">An output specification</param>
        /// <param name="runSettings">Settings</param>
        /// <param name="filter">Filter</param>
        public void WriteResultFile(ITestResult result, OutputSpecification spec, IDictionary <string, object> runSettings, TestFilter filter)
        {
            //string outputPath = Path.Combine(_workDirectory, spec.OutputPath);
            // [DuongNT][BEGIN]: Get configured file path output
            // Write results log
            ResultSummary summary   = new ResultSummary(result);
            int           totalTCT  = summary.TestCount;
            int           passedTCT = summary.PassCount;
            int           failedTCT = summary.FailedCount;
            int           blockTCT  = totalTCT - passedTCT - failedTCT;

            TLogger.Write("");
            TLogger.Write("#####Summary#####");
            TLogger.Write("##### Total #####");
            TLogger.Write("#####   " + totalTCT + "   #####");
            TLogger.Write("##### PASS #####");
            TLogger.Write("#####   " + passedTCT + "   #####");
            TLogger.Write("##### FAIL #####");
            TLogger.Write("#####   " + failedTCT + "   #####");
            TLogger.Write("##### BLOCK #####");
            TLogger.Write("#####   " + blockTCT + "   #####");
            TLogger.Write("##### Details #####");
            TLogger.Write("");

            string outputPath = TSettings.GetInstance().GetOutputFilePathName();

            if (outputPath == "")
            {
                outputPath = Path.Combine(_workDirectory, spec.OutputPath);
            }
            TLogger.Write("Completed test-suite's execution!");
            TLogger.Write("Writing results to: " + outputPath + "...");
            // [DuongNT][END]: Get configured file path output

            OutputWriter outputWriter = null;

            switch (spec.Format)
            {
            case "nunit3":
                outputWriter = new NUnit3XmlOutputWriter();
                break;

            case "nunit2":
                outputWriter = new NUnit2XmlOutputWriter();
                break;

            //case "user":
            //    Uri uri = new Uri(Assembly.GetExecutingAssembly().CodeBase);
            //    string dir = Path.GetDirectoryName(uri.LocalPath);
            //    outputWriter = new XmlTransformOutputWriter(Path.Combine(dir, spec.Transform));
            //    break;

            default:
                throw new ArgumentException(
                          string.Format("Invalid XML output format '{0}'", spec.Format),
                          "spec");
            }

            outputWriter.WriteResultFile(result, outputPath, runSettings, filter);
            TLogger.Write("Results saved to: " + outputPath);
        }