首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有套接字连接的Xunit测试功能( ModbusTCP/IP)

带有套接字连接的Xunit测试功能( ModbusTCP/IP)
EN

Stack Overflow用户
提问于 2021-04-04 22:06:03
回答 1查看 130关注 0票数 0

首先,我要为我糟糕的英语道歉。这不是我的母语。

我已经编写了一个API来与特定的电机控制器进行通信。API与电机控制器之间的连接采用ModbusTCP/IP协议。我使用了一个套接字连接来实现这一点,它发送和接收字节数组。

现在我有一些功能问题,我想通过编写单元测试来解决这些问题,因为控制器根据当前状态返回不同的数据,这使得调试变得困难。

我想在测试中使用Xunit,因为我在其他一些项目中使用了Xunit。但我不知道如何开始对使用套接字连接的函数进行单元测试。在我的代码中很难解释逻辑是如何工作的,但是如果您有兴趣帮助我,如果您查看了它,就很容易理解它。

你可以看看我在Github:https://github.com/SimonOVT/DryveD1API/tree/Basic-Features上的项目

例如:电机控制器有一个状态字。我可以通过以下方式提出要求:

代码语言:javascript
运行
复制
data = new byte[] {0, 0, 0, 0, 0, 13, 0, 43, 13, 0, 0, 0, 96, 65, 0, 0, 0, 0, 2}
_ = s.Send(data, data.Length, 0);
byte[] bytesReceived = new byte[24];
_ = s.Receive(bytesReceived, bytesReceived.Length, 0);

bytesReceived的外观如下: 0,0,0,0,0,0,15,0,43,13,0,0,0,96,65,0,0,0,0,2,33,2

我可以影响StatusWord,如果我从电机控制器写东西给ControlWord,它的工作原理和读取StatusWord一样。

如何在bytesReceived中为包含此通信逻辑的函数伪造数据?:

  1. 读StatusWord:期待我的假数据。

StatusWord:期待不同的假数据。

我想开始测试这个控制器中的Init函数,它基本上有这个逻辑。https://github.com/SimonOVT/DryveD1API/blob/Basic-Features/DryveD1API/Controllers/InitController.cs

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2022-01-05 12:35:38

我也有类似的情况,从来没有尝试过测试实际的接收事件。我所做的就是在接收事件之后对函数进行单元测试。在大多数情况下,该函数可能不会返回任何数据(因此,不能直接对函数进行单元测试)。

在这种情况下,您可以将来自该函数(例如)的所有消息记录到文本文件中,然后可以对该函数的结果进行单元测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66946295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档