test(logging): 更新日志生成器快照测试中的依赖项定义

- 在测试代码中添加了完整的 LogAttribute 定义
- 添加了 ILogger 接口和相关实现类定义
- 包含 LoggerFactoryResolver 和 MockLoggerProvider 实现
- 补充了 MockLogger 类的具体实现
- 确保所有测试用例都有完整的基础依赖项定义
This commit is contained in:
GeWuYou 2026-01-15 22:11:20 +08:00
parent 6cfde41dc6
commit 863e0a523a
2 changed files with 502 additions and 11 deletions

View File

@ -11,10 +11,22 @@ public class EnumExtensionsGeneratorSnapshotTests
public async Task Snapshot_BasicEnum_IsMethods()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.enums;
using System;
namespace GFramework.SourceGenerators.Abstractions.enums
{
[AttributeUsage(AttributeTargets.Enum)]
public sealed class GenerateEnumExtensionsAttribute : Attribute
{
public bool GenerateIsMethods { get; set; } = true;
public bool GenerateIsInMethod { get; set; } = true;
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.enums;
[GenerateEnumExtensions]
public enum Status
{
@ -39,10 +51,22 @@ public class EnumExtensionsGeneratorSnapshotTests
public async Task Snapshot_BasicEnum_IsInMethod()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.enums;
using System;
namespace GFramework.SourceGenerators.Abstractions.enums
{
[AttributeUsage(AttributeTargets.Enum)]
public sealed class GenerateEnumExtensionsAttribute : Attribute
{
public bool GenerateIsMethods { get; set; } = true;
public bool GenerateIsInMethod { get; set; } = true;
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.enums;
[GenerateEnumExtensions]
public enum Status
{
@ -66,11 +90,22 @@ public class EnumExtensionsGeneratorSnapshotTests
public async Task Snapshot_EnumWithFlagValues()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.enums;
using System;
namespace GFramework.SourceGenerators.Abstractions.enums
{
[AttributeUsage(AttributeTargets.Enum)]
public sealed class GenerateEnumExtensionsAttribute : Attribute
{
public bool GenerateIsMethods { get; set; } = true;
public bool GenerateIsInMethod { get; set; } = true;
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.enums;
[GenerateEnumExtensions]
[Flags]
public enum Permissions
@ -97,10 +132,22 @@ public class EnumExtensionsGeneratorSnapshotTests
public async Task Snapshot_DisableIsMethods()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.enums;
using System;
namespace GFramework.SourceGenerators.Abstractions.enums
{
[AttributeUsage(AttributeTargets.Enum)]
public sealed class GenerateEnumExtensionsAttribute : Attribute
{
public bool GenerateIsMethods { get; set; } = true;
public bool GenerateIsInMethod { get; set; } = true;
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.enums;
[GenerateEnumExtensions(GenerateIsMethods = false)]
public enum Status
{
@ -124,10 +171,22 @@ public class EnumExtensionsGeneratorSnapshotTests
public async Task Snapshot_DisableIsInMethod()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.enums;
using System;
namespace GFramework.SourceGenerators.Abstractions.enums
{
[AttributeUsage(AttributeTargets.Enum)]
public sealed class GenerateEnumExtensionsAttribute : Attribute
{
public bool GenerateIsMethods { get; set; } = true;
public bool GenerateIsInMethod { get; set; } = true;
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.enums;
[GenerateEnumExtensions(GenerateIsInMethod = false)]
public enum Status
{

View File

@ -11,10 +11,82 @@ public class LoggerGeneratorSnapshotTests
public async Task Snapshot_DefaultConfiguration_Class()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.logging;
using System;
namespace GFramework.SourceGenerators.Abstractions.logging
{
[AttributeUsage(AttributeTargets.Class)]
public sealed class LogAttribute : Attribute
{
public string Name { get; set; }
public string FieldName { get; set; }
public string AccessModifier { get; set; }
public bool IsStatic { get; set; } = true;
}
}
namespace GFramework.Core.Abstractions.logging
{
public interface ILogger
{
void Info(string message);
void Error(string message);
void Warn(string message);
void Debug(string message);
void Trace(string message);
void Fatal(string message);
}
}
namespace GFramework.Core.logging
{
using GFramework.Core.Abstractions.logging;
public static class LoggerFactoryResolver
{
public static ILoggerProvider Provider { get; set; }
public static ILoggerProvider CreateLogger(string name)
{
return Provider ?? new MockLoggerProvider();
}
}
public interface ILoggerProvider
{
ILogger CreateLogger(string name);
}
internal class MockLoggerProvider : ILoggerProvider
{
public ILogger CreateLogger(string name)
{
return new MockLogger(name);
}
}
internal class MockLogger : ILogger
{
private readonly string _name;
public MockLogger(string name)
{
_name = name;
}
public void Info(string message) { }
public void Error(string message) { }
public void Warn(string message) { }
public void Debug(string message) { }
public void Trace(string message) { }
public void Fatal(string message) { }
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.logging;
[Log]
public partial class MyService
{
@ -36,10 +108,82 @@ public class LoggerGeneratorSnapshotTests
public async Task Snapshot_CustomName_Class()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.logging;
using System;
namespace GFramework.SourceGenerators.Abstractions.logging
{
[AttributeUsage(AttributeTargets.Class)]
public sealed class LogAttribute : Attribute
{
public string Name { get; set; }
public string FieldName { get; set; }
public string AccessModifier { get; set; }
public bool IsStatic { get; set; } = true;
}
}
namespace GFramework.Core.Abstractions.logging
{
public interface ILogger
{
void Info(string message);
void Error(string message);
void Warn(string message);
void Debug(string message);
void Trace(string message);
void Fatal(string message);
}
}
namespace GFramework.Core.logging
{
using GFramework.Core.Abstractions.logging;
public static class LoggerFactoryResolver
{
public static ILoggerProvider Provider { get; set; }
public static ILoggerProvider CreateLogger(string name)
{
return Provider ?? new MockLoggerProvider();
}
}
public interface ILoggerProvider
{
ILogger CreateLogger(string name);
}
internal class MockLoggerProvider : ILoggerProvider
{
public ILogger CreateLogger(string name)
{
return new MockLogger(name);
}
}
internal class MockLogger : ILogger
{
private readonly string _name;
public MockLogger(string name)
{
_name = name;
}
public void Info(string message) { }
public void Error(string message) { }
public void Warn(string message) { }
public void Debug(string message) { }
public void Trace(string message) { }
public void Fatal(string message) { }
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.logging;
[Log(Name = "CustomLogger")]
public partial class MyService
{
@ -61,10 +205,82 @@ public class LoggerGeneratorSnapshotTests
public async Task Snapshot_CustomFieldName_Class()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.logging;
using System;
namespace GFramework.SourceGenerators.Abstractions.logging
{
[AttributeUsage(AttributeTargets.Class)]
public sealed class LogAttribute : Attribute
{
public string Name { get; set; }
public string FieldName { get; set; }
public string AccessModifier { get; set; }
public bool IsStatic { get; set; } = true;
}
}
namespace GFramework.Core.Abstractions.logging
{
public interface ILogger
{
void Info(string message);
void Error(string message);
void Warn(string message);
void Debug(string message);
void Trace(string message);
void Fatal(string message);
}
}
namespace GFramework.Core.logging
{
using GFramework.Core.Abstractions.logging;
public static class LoggerFactoryResolver
{
public static ILoggerProvider Provider { get; set; }
public static ILoggerProvider CreateLogger(string name)
{
return Provider ?? new MockLoggerProvider();
}
}
public interface ILoggerProvider
{
ILogger CreateLogger(string name);
}
internal class MockLoggerProvider : ILoggerProvider
{
public ILogger CreateLogger(string name)
{
return new MockLogger(name);
}
}
internal class MockLogger : ILogger
{
private readonly string _name;
public MockLogger(string name)
{
_name = name;
}
public void Info(string message) { }
public void Error(string message) { }
public void Warn(string message) { }
public void Debug(string message) { }
public void Trace(string message) { }
public void Fatal(string message) { }
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.logging;
[Log(FieldName = "MyLogger")]
public partial class MyService
{
@ -86,10 +302,82 @@ public class LoggerGeneratorSnapshotTests
public async Task Snapshot_InstanceField_Class()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.logging;
using System;
namespace GFramework.SourceGenerators.Abstractions.logging
{
[AttributeUsage(AttributeTargets.Class)]
public sealed class LogAttribute : Attribute
{
public string Name { get; set; }
public string FieldName { get; set; }
public string AccessModifier { get; set; }
public bool IsStatic { get; set; } = true;
}
}
namespace GFramework.Core.Abstractions.logging
{
public interface ILogger
{
void Info(string message);
void Error(string message);
void Warn(string message);
void Debug(string message);
void Trace(string message);
void Fatal(string message);
}
}
namespace GFramework.Core.logging
{
using GFramework.Core.Abstractions.logging;
public static class LoggerFactoryResolver
{
public static ILoggerProvider Provider { get; set; }
public static ILoggerProvider CreateLogger(string name)
{
return Provider ?? new MockLoggerProvider();
}
}
public interface ILoggerProvider
{
ILogger CreateLogger(string name);
}
internal class MockLoggerProvider : ILoggerProvider
{
public ILogger CreateLogger(string name)
{
return new MockLogger(name);
}
}
internal class MockLogger : ILogger
{
private readonly string _name;
public MockLogger(string name)
{
_name = name;
}
public void Info(string message) { }
public void Error(string message) { }
public void Warn(string message) { }
public void Debug(string message) { }
public void Trace(string message) { }
public void Fatal(string message) { }
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.logging;
[Log(IsStatic = false)]
public partial class MyService
{
@ -111,10 +399,82 @@ public class LoggerGeneratorSnapshotTests
public async Task Snapshot_PublicField_Class()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.logging;
using System;
namespace GFramework.SourceGenerators.Abstractions.logging
{
[AttributeUsage(AttributeTargets.Class)]
public sealed class LogAttribute : Attribute
{
public string Name { get; set; }
public string FieldName { get; set; }
public string AccessModifier { get; set; }
public bool IsStatic { get; set; } = true;
}
}
namespace GFramework.Core.Abstractions.logging
{
public interface ILogger
{
void Info(string message);
void Error(string message);
void Warn(string message);
void Debug(string message);
void Trace(string message);
void Fatal(string message);
}
}
namespace GFramework.Core.logging
{
using GFramework.Core.Abstractions.logging;
public static class LoggerFactoryResolver
{
public static ILoggerProvider Provider { get; set; }
public static ILoggerProvider CreateLogger(string name)
{
return Provider ?? new MockLoggerProvider();
}
}
public interface ILoggerProvider
{
ILogger CreateLogger(string name);
}
internal class MockLoggerProvider : ILoggerProvider
{
public ILogger CreateLogger(string name)
{
return new MockLogger(name);
}
}
internal class MockLogger : ILogger
{
private readonly string _name;
public MockLogger(string name)
{
_name = name;
}
public void Info(string message) { }
public void Error(string message) { }
public void Warn(string message) { }
public void Debug(string message) { }
public void Trace(string message) { }
public void Fatal(string message) { }
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.logging;
[Log(AccessModifier = "public")]
public partial class MyService
{
@ -136,10 +496,82 @@ public class LoggerGeneratorSnapshotTests
public async Task Snapshot_GenericClass()
{
const string source = """
using GFramework.SourceGenerators.Abstractions.logging;
using System;
namespace GFramework.SourceGenerators.Abstractions.logging
{
[AttributeUsage(AttributeTargets.Class)]
public sealed class LogAttribute : Attribute
{
public string Name { get; set; }
public string FieldName { get; set; }
public string AccessModifier { get; set; }
public bool IsStatic { get; set; } = true;
}
}
namespace GFramework.Core.Abstractions.logging
{
public interface ILogger
{
void Info(string message);
void Error(string message);
void Warn(string message);
void Debug(string message);
void Trace(string message);
void Fatal(string message);
}
}
namespace GFramework.Core.logging
{
using GFramework.Core.Abstractions.logging;
public static class LoggerFactoryResolver
{
public static ILoggerProvider Provider { get; set; }
public static ILoggerProvider CreateLogger(string name)
{
return Provider ?? new MockLoggerProvider();
}
}
public interface ILoggerProvider
{
ILogger CreateLogger(string name);
}
internal class MockLoggerProvider : ILoggerProvider
{
public ILogger CreateLogger(string name)
{
return new MockLogger(name);
}
}
internal class MockLogger : ILogger
{
private readonly string _name;
public MockLogger(string name)
{
_name = name;
}
public void Info(string message) { }
public void Error(string message) { }
public void Warn(string message) { }
public void Debug(string message) { }
public void Trace(string message) { }
public void Fatal(string message) { }
}
}
namespace TestApp
{
using GFramework.SourceGenerators.Abstractions.logging;
[Log]
public partial class MyService<T>
{