public void InitByConstructor_AllPropertiesApplied() { this.configuration = new ReportConfiguration( this.reportBuilderFactoryMock.Object, new[] { ReportPath }, "C:\\temp", null, new[] { "Latex", "Xml", "Html" }, new[] { FileManager.GetCSharpCodeDirectory() }, new[] { "+Test", "-Test" }, new[] { "+Test2", "-Test2" }, VerbosityLevel.Info.ToString()); Assert.IsTrue(this.configuration.ReportFiles.Contains(ReportPath), "ReportPath does not exist in ReportFiles."); Assert.AreEqual("C:\\temp", this.configuration.TargetDirectory, "Wrong target directory applied."); Assert.IsTrue(this.configuration.ReportTypes.Contains("Latex"), "Wrong report type applied."); Assert.IsTrue(this.configuration.ReportTypes.Contains("Xml"), "Wrong report type applied."); Assert.IsTrue(this.configuration.ReportTypes.Contains("Html"), "Wrong report type applied."); Assert.IsTrue(this.configuration.SourceDirectories.Contains(FileManager.GetCSharpCodeDirectory()), "Directory does not exist in Source directories."); Assert.IsTrue(this.configuration.AssemblyFilters.Contains("+Test"), "AssemblyFilters does not exist in ReportFiles."); Assert.IsTrue(this.configuration.AssemblyFilters.Contains("-Test"), "AssemblyFilters does not exist in ReportFiles."); Assert.IsTrue(this.configuration.ClassFilters.Contains("+Test2"), "ClassFilters does not exist in ReportFiles."); Assert.IsTrue(this.configuration.ClassFilters.Contains("-Test2"), "ClassFilters does not exist in ReportFiles."); Assert.AreEqual(VerbosityLevel.Info, this.configuration.VerbosityLevel, "Wrong verbosity level applied."); }
public void InitWithNamedArguments_AllPropertiesApplied() { string[] namedArguments = new string[] { "-reports:" + ReportPath, "-targetdir:C:\\temp", "-reporttype:Latex", "-sourcedirs:C:\\temp\\source;C:\\temp\\source2", "-assemblyfilters:+Test;-Test", "-classfilters:+Test2;-Test2", "-verbosity:" + VerbosityLevel.Info.ToString() }; this.configuration = this.reportConfigurationBuilder.Create(namedArguments); Assert.IsTrue(this.configuration.ReportFiles.Contains(ReportPath), "ReportPath does not exist in ReportFiles."); Assert.AreEqual("C:\\temp", this.configuration.TargetDirectory, "Wrong target directory applied."); Assert.IsTrue(this.configuration.ReportTypes.Contains("Latex"), "Wrong report type applied."); Assert.IsTrue(this.configuration.SourceDirectories.Contains("C:\\temp\\source"), "Directory does not exist in Source directories."); Assert.IsTrue(this.configuration.SourceDirectories.Contains("C:\\temp\\source2"), "Directory does not exist in Source directories."); Assert.IsTrue(this.configuration.AssemblyFilters.Contains("+Test"), "AssemblyFilters does not exist in ReportFiles."); Assert.IsTrue(this.configuration.ClassFilters.Contains("+Test2"), "ClassFilters does not exist in ReportFiles."); Assert.IsTrue(this.configuration.AssemblyFilters.Contains("-Test"), "AssemblyFilters does not exist in ReportFiles."); Assert.IsTrue(this.configuration.ClassFilters.Contains("-Test2"), "ClassFilters does not exist in ReportFiles."); Assert.AreEqual(VerbosityLevel.Info, this.configuration.VerbosityLevel, "Wrong verbosity level applied."); }
/// <summary> /// The main method. /// </summary> /// <param name="args">The command line arguments.</param> /// <returns>Return code indicating success/failure.</returns> internal static int Main(string[] args) { if (args.Length < 2) { ReportConfigurationBuilder.ShowHelp(); return(1); } ReportConfiguration configuration = ReportConfigurationBuilder.Create(args); return(Execute(configuration) ? 0 : 1); }
/// <summary> /// Executes the report generation. /// </summary> /// <param name="reportConfiguration">The report configuration.</param> /// <returns><c>true</c> if report was generated successfully; otherwise <c>false</c>.</returns> public bool GenerateReport(ReportConfiguration reportConfiguration) { if (reportConfiguration == null) { throw new ArgumentNullException(nameof(reportConfiguration)); } // set it before validate LoggerFactory.VerbosityLevel = reportConfiguration.VerbosityLevel; if (!reportConfiguration.Validate()) { return(false); } var stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); DateTime executionTime = DateTime.Now; var parser = ParserFactory.CreateParser(reportConfiguration.ReportFiles, reportConfiguration.SourceDirectories); var overallHistoricCoverages = new System.Collections.Generic.List <Parser.Analysis.HistoricCoverage>(); var historyStorage = new MefHistoryStorageFactory().GetHistoryStorage(reportConfiguration); if (historyStorage != null) { new HistoryParser(historyStorage) .ApplyHistoricCoverage(parser.Assemblies, overallHistoricCoverages); reportConfiguration.OverallHistoricCoverages = overallHistoricCoverages; } var filteredAssemblies = new Reporting.ReportGenerator( parser, new DefaultFilter(reportConfiguration.AssemblyFilters), new DefaultFilter(reportConfiguration.ClassFilters), new DefaultFilter(reportConfiguration.FileFilters), reportConfiguration.ReportBuilderFactory.GetReportBuilders(reportConfiguration)) .CreateReport(reportConfiguration.HistoryDirectory != null, overallHistoricCoverages, executionTime, reportConfiguration.Tag); if (historyStorage != null) { new HistoryReportGenerator(historyStorage) .CreateReport(filteredAssemblies, executionTime, reportConfiguration.Tag); } stopWatch.Stop(); Logger.InfoFormat(Resources.ReportGenerationTook, stopWatch.ElapsedMilliseconds / 1000d); return(true); }
/// <summary> /// The main method. /// </summary> /// <param name="args">The command line arguments.</param> /// <returns>Return code indicating success/failure.</returns> internal static int Main(string[] args) { if (args.Length < 2) { ReportConfigurationBuilder.ShowHelp(); return(1); } args = args.Select(a => a.EndsWith("\"", StringComparison.OrdinalIgnoreCase) ? a.TrimEnd('\"') + "\\" : a).ToArray(); ReportConfiguration configuration = ReportConfigurationBuilder.Create(args); return(Execute(configuration) ? 0 : 1); }
/// <summary> /// Executes the report generation. /// </summary> /// <param name="configuration">The configuration.</param> /// <returns><c>true</c> if report was generated successfully; otherwise <c>false</c>.</returns> public bool GenerateReport(ReportConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } // set it before validate LoggerFactory.VerbosityLevel = configuration.VerbosityLevel; if (!configuration.Validate()) { return(false); } var stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); DateTime executionTime = DateTime.Now; var parser = ParserFactory.CreateParser(configuration.ReportFiles, configuration.SourceDirectories); if (configuration.HistoryDirectory != null) { new Reporting.HistoryParser( parser.Assemblies, configuration.HistoryDirectory) .ApplyHistoricCoverage(); } new Reporting.ReportGenerator( parser, new DefaultFilter(configuration.AssemblyFilters), new DefaultFilter(configuration.ClassFilters), configuration.ReportBuilderFactory.GetReportBuilders(configuration.TargetDirectory, configuration.ReportTypes)) .CreateReport(configuration.HistoryDirectory != null, executionTime); if (configuration.HistoryDirectory != null) { new Reporting.HistoryReportGenerator( parser, configuration.HistoryDirectory) .CreateReport(executionTime); } stopWatch.Stop(); Logger.InfoFormat(Resources.ReportGenerationTook, stopWatch.ElapsedMilliseconds / 1000d); return(true); }
/// <summary> /// Executes the report generation. /// </summary> /// <param name="configuration">The configuration.</param> /// <returns><c>true</c> if report was generated successfully; otherwise <c>false</c>.</returns> internal static bool Execute(ReportConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } if (!configuration.Validate()) { return false; } LoggerFactory.VerbosityLevel = configuration.VerbosityLevel; var stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); DateTime executionTime = DateTime.Now; var parser = ParserFactory.CreateParser(configuration.ReportFiles, configuration.SourceDirectories); if (configuration.HistoryDirectory != null) { new Reporting.HistoryParser( parser.Assemblies, configuration.HistoryDirectory) .ApplyHistoricCoverage(); } new Reporting.ReportGenerator( parser, new DefaultFilter(configuration.AssemblyFilters), new DefaultFilter(configuration.ClassFilters), configuration.ReportBuilderFactory.GetReportBuilders(configuration.TargetDirectory, configuration.ReportTypes)) .CreateReport(configuration.HistoryDirectory != null, executionTime); if (configuration.HistoryDirectory != null) { new Reporting.HistoryReportGenerator( parser, configuration.HistoryDirectory) .CreateReport(executionTime); } stopWatch.Stop(); Logger.InfoFormat(Resources.ReportGenerationTook, stopWatch.ElapsedMilliseconds / 1000d); return true; }
/// <summary> /// The main method. /// </summary> /// <param name="args">The command line arguments.</param> /// <returns>Return code indicating success/failure.</returns> internal static int Main(string[] args) { var reportConfigurationBuilder = new ReportConfigurationBuilder(new MefReportBuilderFactory()); if (args.Length < 2) { reportConfigurationBuilder.ShowHelp(); return(1); } args = args.Select(a => a.EndsWith("\"", StringComparison.OrdinalIgnoreCase) ? a.TrimEnd('\"') + "\\" : a).ToArray(); ReportConfiguration configuration = reportConfigurationBuilder.Create(args); return(new Generator().GenerateReport(configuration) ? 0 : 1); }
/// <summary> /// Executes the report generation. /// </summary> /// <param name="configuration">The configuration.</param> /// <returns><c>true</c> if report was generated successfully; otherwise <c>false</c>.</returns> public static bool Execute(ReportConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException("configuration"); } var appender = new log4net.Appender.ConsoleAppender(); appender.Layout = new log4net.Layout.PatternLayout("%message%newline"); log4net.Config.BasicConfigurator.Configure(appender); if (!configuration.Validate()) { return(false); } if (configuration.VerbosityLevel == VerbosityLevel.Info) { appender.Threshold = log4net.Core.Level.Info; } else if (configuration.VerbosityLevel == VerbosityLevel.Error) { appender.Threshold = log4net.Core.Level.Error; } var stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); var parser = ParserFactory.CreateParser(configuration.ReportFiles, configuration.SourceDirectories); using (var rendererFactory = new RendererFactory(configuration.ReportType)) { new ReportBuilder( parser, rendererFactory, configuration.TargetDirectory, new DefaultAssemblyFilter(configuration.Filters)) .CreateReport(); } stopWatch.Stop(); Logger.InfoFormat(Resources.ReportGenerationTook, stopWatch.ElapsedMilliseconds / 1000); return(true); }
public void InitWithLegacyArguments_AllPropertiesApplied() { string[] legacyArguments = new string[] { reportPath, "C:\\temp", ReportTypes.Latex.ToString() }; this.configuration = ReportConfigurationBuilder.Create(legacyArguments); Assert.IsTrue(this.configuration.ReportFiles.Contains(reportPath), "ReportPath does not exist in ReportFiles."); Assert.AreEqual("C:\\temp", this.configuration.TargetDirectory, "Wrong target directory applied."); Assert.AreEqual(ReportTypes.Latex, this.configuration.ReportType, "Wrong report type applied."); Assert.IsFalse(this.configuration.SourceDirectories.Any(), "Source directories should be empty."); Assert.IsFalse(this.configuration.Filters.Any(), "Filters should be empty."); }
public void InitByConstructor_AllDefaultValuesApplied() { this.configuration = new ReportConfiguration( new[] { reportPath }, "C:\\temp", new string[] { }, new string[] { }, new string[] { }, string.Empty); Assert.IsTrue(this.configuration.ReportFiles.Contains(reportPath), "ReportPath does not exist in ReportFiles."); Assert.AreEqual("C:\\temp", this.configuration.TargetDirectory, "Wrong target directory applied."); Assert.AreEqual(ReportTypes.Html, this.configuration.ReportType, "Wrong report type applied."); Assert.AreEqual(0, this.configuration.SourceDirectories.Count(), "Wrong number of source directories."); Assert.AreEqual(0, this.configuration.Filters.Count(), "Wrong number of filters."); Assert.AreEqual(VerbosityLevel.Verbose, this.configuration.VerbosityLevel, "Wrong verbosity level applied."); }
/// <summary> /// Executes the report generation. /// </summary> /// <param name="configuration">The configuration.</param> /// <returns><c>true</c> if report was generated successfully; otherwise <c>false</c>.</returns> public static bool Execute(ReportConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException("configuration"); } var appender = new log4net.Appender.ConsoleAppender(); appender.Layout = new log4net.Layout.PatternLayout("%message%newline"); log4net.Config.BasicConfigurator.Configure(appender); if (!configuration.Validate()) { return false; } if (configuration.VerbosityLevel == VerbosityLevel.Info) { appender.Threshold = log4net.Core.Level.Info; } else if (configuration.VerbosityLevel == VerbosityLevel.Error) { appender.Threshold = log4net.Core.Level.Error; } var stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); var parser = ParserFactory.CreateParser(configuration.ReportFiles, configuration.SourceDirectories); using (var rendererFactory = new RendererFactory(configuration.ReportType)) { new ReportBuilder( parser, rendererFactory, configuration.TargetDirectory, new DefaultAssemblyFilter(configuration.Filters)) .CreateReport(); } stopWatch.Stop(); Logger.InfoFormat(Resources.ReportGenerationTook, stopWatch.ElapsedMilliseconds / 1000); return true; }
public void InitByConstructor_AllPropertiesApplied() { this.configuration = new ReportConfiguration( new[] { reportPath }, "C:\\temp", new[] { ReportTypes.Latex.ToString(), ReportTypes.Xml.ToString(), ReportTypes.Html.ToString() }, new[] { FileManager.GetCodeAnalysisDirectory() }, new[] { "+Test", "-Test" }, VerbosityLevel.Info.ToString()); Assert.IsTrue(this.configuration.ReportFiles.Contains(reportPath), "ReportPath does not exist in ReportFiles."); Assert.AreEqual("C:\\temp", this.configuration.TargetDirectory, "Wrong target directory applied."); Assert.IsTrue(this.configuration.ReportType.HasFlag(ReportTypes.Latex), "Wrong report type applied."); Assert.IsTrue(this.configuration.ReportType.HasFlag(ReportTypes.Xml), "Wrong report type applied."); Assert.IsTrue(this.configuration.ReportType.HasFlag(ReportTypes.Html), "Wrong report type applied."); Assert.IsTrue(this.configuration.SourceDirectories.Contains(FileManager.GetCodeAnalysisDirectory()), "Directory does not exist in Source directories."); Assert.IsTrue(this.configuration.Filters.Contains("+Test"), "Filter does not exist in ReportFiles."); Assert.IsTrue(this.configuration.Filters.Contains("-Test"), "Filter does not exist in ReportFiles."); Assert.AreEqual(VerbosityLevel.Info, this.configuration.VerbosityLevel, "Wrong verbosity level applied."); }
public void InitByConstructor_AllDefaultValuesApplied() { this.configuration = new ReportConfiguration( this.reportBuilderFactoryMock.Object, new[] { ReportPath }, "C:\\temp", "C:\\temp\\historic", new string[] { }, new string[] { }, new string[] { }, new string[] { }, string.Empty); Assert.IsTrue(this.configuration.ReportFiles.Contains(ReportPath), "ReportPath does not exist in ReportFiles."); Assert.AreEqual("C:\\temp", this.configuration.TargetDirectory, "Wrong target directory applied."); Assert.AreEqual("C:\\temp\\historic", this.configuration.HistoryDirectory, "Wrong target directory applied."); Assert.IsTrue(this.configuration.ReportTypes.Contains("Html"), "Wrong report type applied."); Assert.AreEqual(0, this.configuration.SourceDirectories.Count(), "Wrong number of source directories."); Assert.AreEqual(0, this.configuration.AssemblyFilters.Count(), "Wrong number of AssemblyFilters."); Assert.AreEqual(0, this.configuration.ClassFilters.Count(), "Wrong number of ClassFilters."); Assert.AreEqual(VerbosityLevel.Verbose, this.configuration.VerbosityLevel, "Wrong verbosity level applied."); }
public void Validate_NotExistingSourceDirectory_ValidationFails() { this.configuration = new ReportConfiguration( new[] { reportPath }, "C:\\temp", new[] { ReportTypes.Latex.ToString() }, new[] { Path.Combine(FileManager.GetCodeAnalysisDirectory(), "123456") }, new[] { "+Test", "-Test" }, VerbosityLevel.Info.ToString()); Assert.IsFalse(this.configuration.Validate(), "Validation should fail."); }
/// <summary> /// Executes the report generation. /// </summary> /// <param name="configuration">The configuration.</param> /// <returns><c>true</c> if report was generated successfully; otherwise <c>false</c>.</returns> internal static bool Execute(ReportConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException("configuration"); } var appender = new ColoredConsoleAppender() { Layout = new log4net.Layout.PatternLayout("%message%newline") }; appender.AddMapping(new ColoredConsoleAppender.LevelColors { Level = log4net.Core.Level.Warn, ForeColor = ColoredConsoleAppender.Colors.Purple | ColoredConsoleAppender.Colors.HighIntensity }); appender.AddMapping(new ColoredConsoleAppender.LevelColors { Level = log4net.Core.Level.Error, ForeColor = ColoredConsoleAppender.Colors.Red | ColoredConsoleAppender.Colors.HighIntensity }); appender.ActivateOptions(); log4net.Config.BasicConfigurator.Configure(appender); if (!configuration.Validate()) { return false; } if (configuration.VerbosityLevel == VerbosityLevel.Info) { appender.Threshold = log4net.Core.Level.Info; } else if (configuration.VerbosityLevel == VerbosityLevel.Error) { appender.Threshold = log4net.Core.Level.Error; } var stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); DateTime executionTime = DateTime.Now; var parser = ParserFactory.CreateParser(configuration.ReportFiles, configuration.SourceDirectories); if (configuration.HistoryDirectory != null) { new Reporting.HistoryParser( parser.Assemblies, configuration.HistoryDirectory) .ApplyHistoricCoverage(); } new Reporting.ReportGenerator( parser, new DefaultAssemblyFilter(configuration.Filters), configuration.ReportBuilderFactory.GetReportBuilders(configuration.TargetDirectory, configuration.ReportTypes)) .CreateReport(configuration.HistoryDirectory != null, executionTime); if (configuration.HistoryDirectory != null) { new Reporting.HistoryReportGenerator( parser, configuration.HistoryDirectory) .CreateReport(executionTime); } stopWatch.Stop(); Logger.InfoFormat(Resources.ReportGenerationTook, stopWatch.ElapsedMilliseconds / 1000d); return true; }
/// <summary> /// Executes the report generation. /// </summary> /// <param name="configuration">The configuration.</param> /// <returns><c>true</c> if report was generated successfully; otherwise <c>false</c>.</returns> internal static bool Execute(ReportConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException("configuration"); } var appender = new ColoredConsoleAppender() { Layout = new log4net.Layout.PatternLayout("%message%newline") }; appender.AddMapping(new ColoredConsoleAppender.LevelColors { Level = log4net.Core.Level.Warn, ForeColor = ColoredConsoleAppender.Colors.Purple | ColoredConsoleAppender.Colors.HighIntensity }); appender.AddMapping(new ColoredConsoleAppender.LevelColors { Level = log4net.Core.Level.Error, ForeColor = ColoredConsoleAppender.Colors.Red | ColoredConsoleAppender.Colors.HighIntensity }); appender.ActivateOptions(); log4net.Config.BasicConfigurator.Configure(appender); if (!configuration.Validate()) { return(false); } if (configuration.VerbosityLevel == VerbosityLevel.Info) { appender.Threshold = log4net.Core.Level.Info; } else if (configuration.VerbosityLevel == VerbosityLevel.Error) { appender.Threshold = log4net.Core.Level.Error; } var stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); DateTime executionTime = DateTime.Now; var parser = ParserFactory.CreateParser(configuration.ReportFiles, configuration.SourceDirectories); if (configuration.HistoryDirectory != null) { new Reporting.HistoryParser( parser.Assemblies, configuration.HistoryDirectory) .ApplyHistoricCoverage(); } new Reporting.ReportGenerator( parser, new DefaultAssemblyFilter(configuration.Filters), configuration.ReportBuilderFactory.GetReportBuilders(configuration.TargetDirectory, configuration.ReportTypes)) .CreateReport(configuration.HistoryDirectory != null, executionTime); if (configuration.HistoryDirectory != null) { new Reporting.HistoryReportGenerator( parser, configuration.HistoryDirectory) .CreateReport(executionTime); } stopWatch.Stop(); Logger.InfoFormat(Resources.ReportGenerationTook, stopWatch.ElapsedMilliseconds / 1000d); return(true); }
public void Validate_InvalidFilter_ValidationFails() { this.configuration = new ReportConfiguration( this.reportBuilderFactoryMock.Object, new[] { ReportPath }, @"C:\\temp", null, new[] { "Latex" }, new[] { FileManager.GetCSharpCodeDirectory() }, new[] { "Test" }, new[] { "Test2" }, VerbosityLevel.Info.ToString()); Assert.IsFalse(this.configuration.Validate(), "Validation should fail."); }
public void Validate_NotExistingSourceDirectory_ValidationFails() { this.configuration = new ReportConfiguration( this.reportBuilderFactoryMock.Object, new[] { ReportPath }, "C:\\temp", null, new[] { "Latex" }, new[] { Path.Combine(FileManager.GetCSharpCodeDirectory(), "123456") }, new[] { "+Test", "-Test" }, new[] { "+Test2", "-Test2" }, VerbosityLevel.Info.ToString()); Assert.IsFalse(this.configuration.Validate(), "Validation should fail."); }
public void Validate_NoTargetDirectory_ValidationFails() { this.configuration = new ReportConfiguration( this.reportBuilderFactoryMock.Object, new[] { ReportPath }, string.Empty, null, new[] { "Latex" }, new[] { FileManager.GetCSharpCodeDirectory() }, new[] { "+Test", "-Test" }, new[] { "+Test2", "-Test2" }, VerbosityLevel.Info.ToString()); Assert.IsFalse(this.configuration.Validate(), "Validation should fail."); }
public void Validate_NoTargetDirectory_ValidationFails() { this.configuration = new ReportConfiguration( new[] { reportPath }, string.Empty, new[] { ReportTypes.Latex.ToString() }, new[] { FileManager.GetCodeAnalysisDirectory() }, new[] { "+Test", "-Test" }, VerbosityLevel.Info.ToString()); Assert.IsFalse(this.configuration.Validate(), "Validation should fail."); }
public void Validate_NonExistingReport_ValidationFails() { this.configuration = new ReportConfiguration( new[] { "123.xml" }, "C:\\temp", new[] { ReportTypes.Latex.ToString() }, new[] { FileManager.GetCodeAnalysisDirectory() }, new[] { "+Test", "-Test" }, VerbosityLevel.Info.ToString()); Assert.IsFalse(this.configuration.Validate(), "Validation should fail."); }
public void Validate_InvalidReportType_ValidationFails() { this.configuration = new ReportConfiguration( new[] { reportPath }, "C:\\temp", new[] { "DoesNotExist" }, new[] { FileManager.GetCodeAnalysisDirectory() }, new[] { "+Test", "-Test" }, VerbosityLevel.Info.ToString()); Assert.IsFalse(this.configuration.Validate(), "Validation should fail."); }
public void Validate_NonExistingReport_ValidationFails() { this.configuration = new ReportConfiguration( this.reportBuilderFactoryMock.Object, new[] { "123.xml" }, "C:\\temp", null, new[] { "Latex" }, new[] { FileManager.GetCSharpCodeDirectory() }, new[] { "+Test", "-Test" }, VerbosityLevel.Info.ToString()); Assert.IsFalse(this.configuration.Validate(), "Validation should fail."); }