예제 #1
0
        public IEnumerable <MethodMetaData> GetTestCoverageMetrics(TestCoverage coverage)
        {
            var visitedMethodMetadata = coverage.CoverageSession.Modules
                                        .SelectMany(c => c.Classes)                                  //Flat list of all classes in coverage session
                                        .SelectMany(f => f.Methods)                                  //Flat list of all the functions touched in the coverage session
                                        .Where(f => f.Visited)                                       //Filter out any function that weren't visited.
                                        .Select(f => new MethodMetaData(f, coverage.Test.TestName)); //Turn all of the methods into my custom meta data class. Look inside for details.

            return(visitedMethodMetadata);
        }
예제 #2
0
        public AnnotatedTest FindAnnotation(ref IList <AnnotatedTest> annotations, TestCoverage coverage)
        {
            foreach (var annotation in annotations)
            {
                if (Equals(coverage.Test, annotation.IndividualTest))
                {
                    return(annotation);
                }
            }

            return(null);
        }
예제 #3
0
        public TestCoverage FindCoverage(TestCoverage coverage, ref TraceTests against)
        {
            foreach (var testCoverage in against.TestCoverages)
            {
                if (testCoverage.Pass != coverage.Pass)
                {
                    continue;
                }

                if (CompareModuleCoverages(testCoverage.ModuleCoverages,
                                           coverage.ModuleCoverages))
                {
                    return(testCoverage);
                }
            }
            return(null);
        }
예제 #4
0
        public IList <StudentTestDto> GetStudentTests(TestCoverage instructor, ref TraceTests student)
        {
            var studentTests = new List <StudentTestDto>();
            var testStatus   = TestStatusEnum.Covered;

            foreach (var coverage in student.TestCoverages)
            {
                if (CompareModuleCoverages(instructor.ModuleCoverages, coverage.ModuleCoverages))
                {
                    studentTests.Add(
                        new StudentTestDto()
                    {
                        TestStatus = testStatus,
                        Name       = coverage.Test.TestName,
                        Passed     = coverage.Pass
                    });
                    testStatus = TestStatusEnum.Redundant;
                }
            }
            return(studentTests);
        }
예제 #5
0
        private static async Task <TestCoverage> GetTestCoverageHits(RemoteWebDriver webDriver)
        {
            // wait for 5 seconds
            var waitTime = 5 * 1000;
            var interval = 500;
            var count    = waitTime / interval;

            TestCoverage testCoverage = null;

            while (count > 0)
            {
                count--;
                var resultsObject = (string)webDriver.ExecuteScript("return JSON.stringify(TestRunner.GetTestCoverage());");
                testCoverage = JsonSerializer.Deserialize <TestCoverage>(resultsObject, new JsonSerializerOptions()
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                });
                if (testCoverage != null)
                {
                    break;
                }
                await Task.Delay(interval);
            }

#if DEBUG
            if (testCoverage is null)
            {
                throw new TestRunnerException("Failed to get test coverage results.");
            }

            if (testCoverage.HitsFilePath is null)
            {
                throw new TestRunnerException("Failed to get test coverage hits file path.");
            }
#endif

            return(testCoverage);
        }