string ExerciseSut(Report report)
        {
            var builder = new StringBuilder();

            using (var writer = new StringWriter(builder))
            {
                var sut = new TextReportRenderer(writer);
                sut.Render(report);
            }

            return(builder.ToString());
        }
Пример #2
0
        private string RenderScenarioReport(IScenario scenario)
        {
            if (scenario == null)
            {
                return(null);
            }

            var reportModel = Scenario.DiContainer.TryResolve <IHandlesReportableEvents>() as IGetsReportModel;

            if (reportModel == null)
            {
                return(null);
            }

            var builder          = reportModel.GetType().BaseType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance).FirstOrDefault(f => f.Name == "builder").GetValue(reportModel) as ReportBuilder;
            var scenarioBuilders = builder.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance).FirstOrDefault(f => f.Name == "scenarioBuilders").GetValue(builder) as ConcurrentDictionary <Guid, IBuildsScenario>;

            foreach (var b in scenarioBuilders)
            {
                if (b.Key == Scenario.Identity)
                {
                    var integration = new IntegrationReader().GetIntegration(GetType().Assembly);

                    var buildsScenario = (IBuildsScenario)builder.GetType().GetMethod("GetScenarioBuilder", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(builder, new object[] { Scenario.Identity });
                    var reportFactory  = (IGetsReport)builder.GetType().GetField("reportFactory", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(builder);
                    var report         = reportFactory.GetReport(new[] { buildsScenario });
                    //var di = ir.GetIntegration(null).GetType().GetProperties(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).FirstOrDefault(f => f.Name == "builder").GetValue(this) as ReportBuilder;
                    //d.TryResolve<ITestOutputHelper>()?.WriteLine(sb.ToString());
                    //ir.GetIntegration().d
                    //	ir.GetIntegration().
                    //(b.Value.GetScenario() as CSF.Screenplay.Scenarios.Scenario).DiContainer.Resolve<ITestOutputHelper>
                    var sb = new StringBuilder();
                    using (var textWriter = new StringWriter(sb))
                    {
                        var textReportRenderer = new TextReportRenderer(textWriter, false);
                        textReportRenderer.Render(report);
                        return(sb.ToString());
                    }
                }
            }

            return(null);
        }