gpt4 book ai didi

C# 单元测试复杂处理程序网络

转载 作者:行者123 更新时间:2023-11-30 13:59:17 26 4
gpt4 key购买 nike

我有一个相当复杂的程序架构,逻辑最少,但传递了很多事件处理程序。我正在制作一个服务器框架的骨架,我有以下类:

Core,它监听:

CommHandler,它监听:

CommLayer,它监听:

IServerMock,我用模拟框架 (MOQ) 将其 stub 。

对这种由事件触发的关系进行单元测试的最佳方法是什么?我知道单元测试应该是非常孤立和精细的事情,但我能想到的唯一测试方法是测试整个过程并检查 Core 的最终输出。

最佳答案

您需要对每个类进行抽象,以便 Core 依赖于 ICommHandler 而不是 CommHandler 等等。依赖项应通过构造函数提供,这样您就可以轻松地隔离测试每个类,因为您可以模拟它的依赖项。

public class Core
{
private ICommHandler commHandler;

public Core(ICommHandler commHandler)
{
this.commHandler = commHandler;
}
}

然后在您的生产代码中,您可以这样做:

var core = new Core(new CommHandler());

虽然使用 IOC 容器来管理对象的实例化会更好,因为 CommHandler 有它自己的依赖项,但您应该单独研究它。

然后在你的单元测试中,你可以这样做:

[Test]
public void TestSomeCommHandlerEvent()
{
var mockCommHandler = new Mock<ICommHandler>();
// set up the mock

var core = new Core(mockCommHandler.Object);
}

这样做可以让您用可以配置其行为的模拟替换测试中 ICommHandler 的实现。

关于C# 单元测试复杂处理程序网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13939309/

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