Esempio n. 1
0
        public async Task <TestResult> Run(object testClassInstance, AggregateEventReceiver aggregateReceiver,
                                           TestMethod specificMethod)
        {
            await ExecuteTestInit(testClassInstance);

            return(await specificMethod.Invoke(testClassInstance, aggregateReceiver));
        }
Esempio n. 2
0
        public async Task <List <TestResult> > Run(object testClassInstance, AggregateEventReceiver aggregateReceiver)
        {
            aggregateReceiver.Handle(new TestClassStarted(testClassInstance));
            var results = new List <TestResult>();

            foreach (var method in Methods)
            {
                await ExecuteTestInit(testClassInstance);

                var result = await method.Invoke(testClassInstance, aggregateReceiver);

                results.Add(result);
            }

            var totalTime = results.Sum(x => x.Elapsed.TotalMilliseconds);

            aggregateReceiver.Handle(new TestClassFinished(testClassInstance, TimeSpan.FromMilliseconds(totalTime)));
            return(results);
        }
Esempio n. 3
0
        private async Task <TestResult> RunTestMethod(TestClass testClass, TestMethod method)
        {
            using (var scope = _container.CreateScope())
            {
                var tests = scope.ServiceProvider
                            .GetServices(testClass.Type)
                            .ToList();
                if (!tests.Any())
                {
                    throw new ArgumentOutOfRangeException(nameof(testClass), testClass,
                                                          $"{testClass.Type.FullName} has not been registered.");
                }

                var test = tests[0];

                var eventReceivers    = scope.ServiceProvider.GetServices <IEventReceiver>();
                var aggregateReceiver = new AggregateEventReceiver(eventReceivers);
                return(await testClass.Run(test, aggregateReceiver, method));
            }
        }