Exemple #1
0
        public static List <TestCase> GetSpecs(GaugeTestRunSettings testRunSettings,
                                               ITestCaseDiscoverySink discoverySink,
                                               IEnumerable <string> sources, IMessageLogger logger)
        {
            var gaugeProjectProperties = testRunSettings.ProjectsProperties;
            var props = string.Join(",", gaugeProjectProperties.Select(p =>
                                                                       $"ProjectRoot: {p.ProjectRoot}, OutputPath: {p.BuildOutputPath}, API Port: {p.ApiPort}"));

            logger.SendMessage(TestMessageLevel.Informational,
                               $"Discover Scenarios started. Using : {props}");

            var testCases   = new ConcurrentBag <TestCase>();
            var testSources = sources.Where(s => string.CompareOrdinal(s, "Suite") != 0);

            try
            {
                Parallel.ForEach(gaugeProjectProperties, properties =>
                {
                    var protoSpecs = Specification.GetAllSpecs(properties.ApiPort);

                    Parallel.ForEach(protoSpecs, spec =>
                    {
                        if (testSources.All(s => string.CompareOrdinal(s, spec.FileName) != 0))
                        {
                            return;
                        }

                        logger.SendMessage(TestMessageLevel.Informational, $"Adding test cases from : {spec.FileName}");
                        var scenarios = spec.Items.Where(item => item.Scenario != null).Select(item => item.Scenario);

                        foreach (var scenario in scenarios)
                        {
                            var testCase = CreateTestCase(logger, spec, scenario, properties);
                            testCases.Add(testCase);
                            discoverySink?.SendTestCase(testCase);
                        }
                    });
                });
            }
            catch (Exception e)
            {
                logger.SendMessage(TestMessageLevel.Error, e.ToString());
            }
            return(testCases.ToList());
        }
Exemple #2
0
 public GaugeTestRunSettingsService()
 {
     Name       = GaugeTestRunSettings.SettingsName;
     Settings   = new GaugeTestRunSettings();
     Serializer = new XmlSerializer(typeof(GaugeTestRunSettings));
 }