gpt4 book ai didi

c# - 模拟 EventLog 和 EventLogEntry

转载 作者:可可西里 更新时间:2023-11-01 14:07:34 26 4
gpt4 key购买 nike

我正在尝试为报告 EventLog 中的条目的应用程序编写单元测试。现在,当我运行单元测试时,我必须创建一个临时 EventLog,向其中写入条目,并在完成后删除日志。我这样做是因为我需要取回没有构造函数的 EventLogEntry 对象。

我的问题是是否有任何方法可以模拟 EventLog 以便能够取回 EventLogEntries。必须将条目写入实际的 EventLog 对我来说更像是集成测试而不是单元测试。

最佳答案

这类似于我今天刚刚回答的另一个问题 - How do I unit-test saving file to the disk?

唯一的区别是 - 您的依赖项是 EventLog 和相关类。让我们假设您只需要记录一些具有严重性的文本。

struct Event 
{
public string Description {get; set;}
public Severity Severity {get; set;}
}

interface Logger
{
void WriteEvent(Event e);
void IEnumerable<Event> GetEvents();
}

现在,由于 EventLog 是一个 .Net 类,您不能将其强制转换为 Logger 接口(interface),因此您需要一个适配器

public EventLogAdapter : Logger {
//delegates to .Net framework's EventLog
// Also EventLogEntry is internal to this class - entries will be mapped to Event structs
}

现在我们所需要的只是测试...就像 UIA 或 123 一样简单

  • 依赖于 Logger 的类的单元测试将使用模拟。
  • 编写集成测试以验证 EventLogAdapter 的 API 是否确实写入内容并从 Windows EventLog 中读取
  • 至少编写一个验收测试来验证导致某些日志记录的端到端场景,即验证是否正确插入了 EventLogAdapter。

关于c# - 模拟 EventLog 和 EventLogEntry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3372940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com