C# 如何为连接设备的代码编写单元测试

C# 如何为连接设备的代码编写单元测试,c#,unit-testing,C#,Unit Testing,我写了一个连接设备的程序 例如,我需要测试reset方法来发送设备的重置请求(它不是HTTP请求,可以是套接字)(设备可以是任何东西)。 我不想测试请求,只是想确保方法正确工作 在计算机编程中,单元测试是个体 源代码单位,一个或多个计算机程序模块的集合 以及相关的控制数据、使用程序和操作系统 对程序进行测试,以确定其是否适合使用。[1] 直观地说,可以将单元视为系统中最小的可测试部分 应用在程序编程中,一个单元可以是一个整体 模块,但更常见的是单个函数或过程。在里面 面向对象编程单元通常是一个完

我写了一个连接设备的程序

例如,我需要测试
reset
方法来发送设备的重置请求(它不是HTTP请求,可以是套接字)(设备可以是任何东西)。 我不想测试请求,只是想确保方法正确工作

在计算机编程中,单元测试是个体 源代码单位,一个或多个计算机程序模块的集合 以及相关的控制数据、使用程序和操作系统 对程序进行测试,以确定其是否适合使用。[1] 直观地说,可以将单元视为系统中最小的可测试部分 应用在程序编程中,一个单元可以是一个整体 模块,但更常见的是单个函数或过程。在里面 面向对象编程单元通常是一个完整的接口,例如 作为一个类,但可以是一个单独的方法

我无法单独测试
重置
方法(没有设备)。 我可以为
reset
方法编写单元测试吗?
如何为这些情况编写单元测试?

使用模拟库,例如:。然后,在单元测试中,您可以创建一个实现设备接口的模拟,并且可以验证是否调用了一个特定的方法(在本例中为-reset)。

您需要创建一个设备仿真系统,假设该设备对您很重要,并且您确实需要知道您的代码是否可以使用它

“模拟”只创建一个接口,而您的协议需要测试。例如,
reset
方法需要非零的时间让设备进行物理和逻辑复位。嘲笑是不会成功的。类似地,设备在某些状态下只能接受某些命令;让状态机支持仿真器通常是很重要的


您不需要在C#中实现设备模拟器;您只需要连接到设备模拟器。例如,有高度可定制的模拟系统,它们实现状态机,并且可以由测试数据文件或脚本驱动。

你所说的“协议”是什么意思?在这种情况下,使用适当的参数调用设备接口的方法形成协议(与设备通信的一种方式)。因此,只要你想在我提到的理解中测试协议,模拟验证方法调用就是你所需要的。涉及设备的协议是基于值、状态和时间的。模拟库不测试这些东西。设备仿真需要产生好的值、坏的值和好看但不合适的值,以确保被测软件能够处理它们。仿真还需要及时响应,也需要及时响应——如果重置期间设备断电会发生什么情况?——测试通过还是失败?或者正确地恢复?类似的陈述适用于设备的状态。你是对的,这些都是重要的事情。但是,要针对坏值、奇数值和其他值测试软件,您不需要模拟设备,只需将这些值输入到创建的mock中,以供软件接收。你说的是集成测试,或者说黑盒测试。在单元测试中,您必须确保只测试一件事情。编写仿真软件是另一个可能出现额外错误的地方。这就是为什么,首先您需要一组好的单元测试。对于单元测试,您只需要测试协议的值部分。然而,单元测试是测试中最不有趣的部分,尽管单元测试对于软件的长期维护至关重要。状态机和时序依赖性的测试是大多数bug被捕获的地方。1)单元测试只涉及价值的信息来源是什么?Wiki定义未提及任何内容:。好的,您可以并且应该使用单元测试来测试活动。2) 对不起,但是你对什么有趣,什么不有趣的感觉在这里是无关紧要的。作者的问题是关于单元测试的。