mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
- 为 AsyncLogAppender 添加完整功能测试,包括异步写入、缓冲区管理、并发处理等场景 - 为 CachedLoggerFactory 添加缓存机制测试,验证相同名称和级别的日志记录器重用 - 为 CompositeFilter 添加过滤器组合测试,验证多个过滤器的逻辑组合功能 - 为 CompositeLogger 添加复合日志记录器测试,验证多追加器写入和级别过滤功能 - 为 ConsoleAppender 添加控制台追加器测试,验证格式化输出和过滤器支持 - 为 DefaultLogFormatter 添加默认格式化器测试,验证基本格式化和异常处理功能 - 为 FileAppender 添加文件追加器测试,验证文件写入、目录创建和追加模式功能 - 为 JsonLogFormatter 添加 JSON 格式化器测试,验证 JSON 输出和属性序列化功能 - 为 LogContext 添加日志上下文测试,验证属性推送和作用域管理功能
109 lines
3.2 KiB
C#
109 lines
3.2 KiB
C#
using System.IO;
|
|
using GFramework.Core.Abstractions.logging;
|
|
using GFramework.Core.logging.appenders;
|
|
using GFramework.Core.logging.filters;
|
|
using GFramework.Core.logging.formatters;
|
|
using NUnit.Framework;
|
|
|
|
namespace GFramework.Core.Tests.logging;
|
|
|
|
/// <summary>
|
|
/// 测试 ConsoleAppender 的功能和行为
|
|
/// </summary>
|
|
[TestFixture]
|
|
public class ConsoleAppenderTests
|
|
{
|
|
[SetUp]
|
|
public void SetUp()
|
|
{
|
|
_stringWriter = new StringWriter();
|
|
_appender = new ConsoleAppender(new DefaultLogFormatter(), _stringWriter, useColors: false);
|
|
}
|
|
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
_appender?.Dispose();
|
|
_stringWriter?.Dispose();
|
|
}
|
|
|
|
private StringWriter _stringWriter = null!;
|
|
private ConsoleAppender _appender = null!;
|
|
|
|
[Test]
|
|
public void Constructor_WithNullFormatter_ShouldThrowArgumentNullException()
|
|
{
|
|
Assert.Throws<ArgumentNullException>(() => new ConsoleAppender(null!));
|
|
}
|
|
|
|
[Test]
|
|
public void Append_ShouldWriteToWriter()
|
|
{
|
|
var entry = new LogEntry(DateTime.Now, LogLevel.Info, "TestLogger", "Test message", null, null);
|
|
|
|
_appender.Append(entry);
|
|
|
|
var output = _stringWriter.ToString();
|
|
Assert.That(output, Does.Contain("Test message"));
|
|
Assert.That(output, Does.Contain("INFO"));
|
|
}
|
|
|
|
[Test]
|
|
public void Append_WithFilter_ShouldRespectFilter()
|
|
{
|
|
var filter = new LogLevelFilter(LogLevel.Warning);
|
|
var appender = new ConsoleAppender(new DefaultLogFormatter(), _stringWriter, useColors: false, filter: filter);
|
|
|
|
var infoEntry = new LogEntry(DateTime.Now, LogLevel.Info, "TestLogger", "Info message", null, null);
|
|
var warningEntry = new LogEntry(DateTime.Now, LogLevel.Warning, "TestLogger", "Warning message", null, null);
|
|
|
|
appender.Append(infoEntry);
|
|
appender.Append(warningEntry);
|
|
|
|
var output = _stringWriter.ToString();
|
|
Assert.That(output, Does.Not.Contain("Info message"));
|
|
Assert.That(output, Does.Contain("Warning message"));
|
|
|
|
appender.Dispose();
|
|
}
|
|
|
|
[Test]
|
|
public void Flush_ShouldFlushWriter()
|
|
{
|
|
var entry = new LogEntry(DateTime.Now, LogLevel.Info, "TestLogger", "Test message", null, null);
|
|
|
|
_appender.Append(entry);
|
|
_appender.Flush();
|
|
|
|
var output = _stringWriter.ToString();
|
|
Assert.That(output, Does.Contain("Test message"));
|
|
}
|
|
|
|
[Test]
|
|
public void Dispose_ShouldFlushWriter()
|
|
{
|
|
var entry = new LogEntry(DateTime.Now, LogLevel.Info, "TestLogger", "Test message", null, null);
|
|
|
|
_appender.Append(entry);
|
|
_appender.Dispose();
|
|
|
|
var output = _stringWriter.ToString();
|
|
Assert.That(output, Does.Contain("Test message"));
|
|
}
|
|
|
|
[Test]
|
|
public void Append_MultipleEntries_ShouldWriteAll()
|
|
{
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
var entry = new LogEntry(DateTime.Now, LogLevel.Info, "TestLogger", $"Message {i}", null, null);
|
|
_appender.Append(entry);
|
|
}
|
|
|
|
var output = _stringWriter.ToString();
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
Assert.That(output, Does.Contain($"Message {i}"));
|
|
}
|
|
}
|
|
} |