コード例 #1
0
        public static void RunAndCompareTests(
            [QueueTrigger("run-and-compare-tests")] TestComparisonRequest request,
            [Blob("testzips/{TestComparisonId}.zip", FileAccess.Read)] Stream testZip,
            [Blob("testcomparisons/{TestComparisonId}.json")] CloudBlockBlob outputBlob)
        {
            string currentDirectory = AppDomain.CurrentDomain.BaseDirectory;
            string testDirectory    = Path.Combine(currentDirectory, request.TestComparisonId);

            ExtractTestZip(testZip, testDirectory);
            string             pathToTestDll     = Path.Combine(testDirectory, "old", request.TestDll);
            string             pathToOldCoverage = Path.Combine(testDirectory, "OldCoverage");
            string             pathToNewCoverage = Path.Combine(testDirectory, "NewCoverage");
            CodeCoverageRunner runner            = CreateRunner(currentDirectory, request);

            runner.TestRunnerArguments               = string.Format("\"\"{0}\"\" -method {1} -noshadow", pathToTestDll, request.TestToRun);
            runner.PathToCodeCoverageXmlFile         = Path.Combine(testDirectory, "old.xml");
            runner.PathToCodeCoverageReportDirectory = Path.Combine(testDirectory, "OldCoverage");
            runner.RunCodeCoverage();
            pathToTestDll = Path.Combine(testDirectory, "new", request.TestDll);
            runner.TestRunnerArguments               = string.Format("\"\"{0}\"\" -method {1} -noshadow", pathToTestDll, request.TestToRun);
            runner.PathToCodeCoverageXmlFile         = Path.Combine(testDirectory, "new.xml");
            runner.PathToCodeCoverageReportDirectory = Path.Combine(testDirectory, "NewCoverage");
            runner.RunCodeCoverage();
            IEnumerable <FileDifferences> differences = new CodeCoverageComparison().CompareDirectories(pathToOldCoverage, pathToNewCoverage);

            outputBlob.UploadText(FileDifferencesSerializer.ToString(differences));
            Directory.Delete(testDirectory, true);
        }
コード例 #2
0
 private static CodeCoverageRunner CreateRunner(string currentDirectory, TestComparisonRequest request)
 {
     return(new CodeCoverageRunner()
     {
         PathToOpenCover = Path.Combine(currentDirectory, @"OpenCover.4.5.3723\OpenCover.Console.exe"),
         PathToReportGenerator = Path.Combine(currentDirectory, @"ReportGenerator.2.1.4.0\ReportGenerator.exe"),
         PathToTestRunner = Path.Combine(currentDirectory, @"xunit.runner.console.2.0.0\tools\xunit.console.exe"),
         CodeCoverageFilter = request.CodeCoverageFilter
     });
 }
コード例 #3
0
        // POST api/values
        public string Post(string testToRun, HttpPostedFileBase zipFile)
        {
            string requestId = Guid.NewGuid().ToString("N");
            string blobName  = requestId + ".zip";
            CloudStorageAccount storageAccount          = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["TestComparisonStorage"].ToString());
            CloudBlobClient     blobClient              = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer  testComparisonContainer = blobClient.GetContainerReference("testzips");
            CloudBlockBlob      blob = testComparisonContainer.GetBlockBlobReference(blobName);

            blob.UploadFromStream(zipFile.InputStream);
            CloudQueueClient      queueClient = storageAccount.CreateCloudQueueClient();
            CloudQueue            queue       = queueClient.GetQueueReference("run-and-compare-tests");
            TestComparisonRequest request     = new TestComparisonRequest()
            {
                TestComparisonId = requestId,
                TestToRun        = testToRun
            };

            queue.AddMessage(new CloudQueueMessage(JsonConvert.SerializeObject(request)));
            return(requestId);
        }