protected async Task <RunTestResponse> RunDotNetTestAsync(string projectName, string methodName, string testFramework, bool shouldPass, bool expectResults = true)
        {
            using (var testProject = await TestAssets.Instance.GetTestProjectAsync(projectName))
                using (var host = CreateOmniSharpHost(testProject.Directory, dotNetCliVersion: DotNetCliVersion))
                {
                    var service = GetRequestHandler(host);

                    var request = new RunTestRequest
                    {
                        FileName          = Path.Combine(testProject.Directory, "TestProgram.cs"),
                        MethodName        = methodName,
                        TestFrameworkName = testFramework
                    };

                    var response = await service.Handle(request);

                    if (expectResults)
                    {
                        Assert.True(response.Results?.Length > 0, "Expected test to return results.");
                    }

                    if (shouldPass)
                    {
                        Assert.True(response.Pass, "Expected test to pass but it failed");
                    }
                    else
                    {
                        Assert.False(response.Pass, "Expected test to fail but it passed");
                    }

                    return(response);
                }
        }
示例#2
0
        public async Task <RunTestResponse> RunTest(RunTestRequest request)
        {
            var listRequest  = new ListTestsDataRequest(request.FilteringOrders, new Vectors.IntInterval(0, 1000), true, false);
            var listResponse = await TestsStorage.ListTestsDataAsync(listRequest);

            var testsQuery = Db.TestRuns
                             .IncludeGroup(RunnerService.Db.EntityGroups.ALL, Db)
                             .Filter(Logger, request.FilteringOrders);
            var tests = await testsQuery.ToArrayAsync();

            foreach (var testFromStorge in listResponse.Tests)
            {
                var exists = tests.Any(r => r.TestName == testFromStorge.TestName);
                if (!exists)
                {
                    tests.Add(new RunnerService.Db.TestRunInfo()
                    {
                        TestId   = testFromStorge.TestId,
                        Results  = new List <Result>(),
                        RunPlan  = new ManualRunPlan(),
                        TestName = testFromStorge.TestName,
                    });

                    await Db.TestRuns.AddAsync(tests.LastElement());
                }
            }

            var messages = new List <Func <BeginTestMessage> >();

            foreach (var test in tests)
            {
                var result = new Result()
                {
                    ResultBase = new PendingCompletionResult()
                    {
                        StartTime     = DateTime.UtcNow,
                        StartedByUser = request.StartedByUser,
                        TestId        = test.TestId,
                        TestName      = test.TestName,
                        State         = new StateInfo("", null, false)
                    }
                };
                test.Results.Add(result);

                var data = listResponse.Tests.First(t => t.TestName == test.TestName).Data;
                messages.Add(() => new BeginTestMessage(test.TestId, result.Id, data.Type, data.Data));
            }

            await Db.SaveChangesAsync();

            foreach (var message in messages)
            {
                MessageProducer.FireBeginTest(message());
            }

            return(new RunTestResponse());
        }
        protected async Task <RunTestResponse> RunDotNetTestAsync(string projectName, string methodName, string testFramework, bool shouldPass, string targetFrameworkVersion = null, bool expectResults = true, bool useRunSettings = false)
        {
            using (var testProject = await TestAssets.Instance.GetTestProjectAsync(projectName))
                using (var host = CreateOmniSharpHost(testProject.Directory, null, DotNetCliVersion))
                {
                    var service = host.GetRequestHandler <RunTestService>(OmniSharpEndpoints.V2.RunTest);

                    var request = new RunTestRequest
                    {
                        FileName               = Path.Combine(testProject.Directory, "TestProgram.cs"),
                        MethodName             = methodName,
                        TestFrameworkName      = testFramework,
                        TargetFrameworkVersion = targetFrameworkVersion
                    };

                    if (useRunSettings)
                    {
                        request.RunSettings = Path.Combine(testProject.Directory, "TestRunSettings.runsettings");
                    }

                    var response = await service.Handle(request);

                    if (expectResults)
                    {
                        Assert.True(response.Results?.Length > 0, "Expected test to return results.");
                    }

                    if (shouldPass)
                    {
                        Assert.True(response.Pass, "Expected test to pass but it failed");
                    }
                    else
                    {
                        Assert.False(response.Pass, "Expected test to fail but it passed");
                    }

                    return(response);
                }
        }
示例#4
0
 public Task <RunTestResponse> RunTestAsync(RunTestRequest request)
 {
     return(MakeRequestAsync <RunTestRequest, RunTestResponse>(HttpMethod.Post, nameof(RunTestAsync), request));
 }