public void ContextLoggerOutputsSummaryCorrectly(LogLevel[] levels, LogLevel expectedLevel, string expectedMessage) { const string message = "This is a test"; using var context = new ActionContext("default", "TestContext"); Thread.Sleep(10); var logger = new ContextLogger(context); foreach (var level in levels) { logger.Log(level, message); } var summary = logger.GetSummaryLogEntry(); Assert.NotNull(logger); Assert.Equal(levels.Length, logger.LogEntries.Count); Assert.Equal(context.Info.ContextName, summary.ContextName); Assert.Equal(context.Info.Id, summary.ContextId); Assert.Equal(expectedLevel, summary.LogLevel); Assert.StartsWith($"The context '{context.Info.ContextName}' ended {expectedMessage}", summary.Message); Assert.True(summary.TimeElapsed.TotalMilliseconds > 10); }