我正在研究一个大型的遗留Java应用程序。它已经有一个广泛的现有框架来处理设备驱动程序。我需要为通过JavaComm连接到串行端口的设备创建新的设备驱动程序。
现有驱动程序只是在其configure()
方法中创建新的串行端口,然后从串行端口对象创建新的输入和输出流,然后将这些输入和输出流用于设备通信,但没有单元测试
我希望我的新类可以进行单元测试,但是如果它能够适应这个现有的框架,我希望如何能够实现这一点,而现有框架将在{{\ n}中设置串口,输入和输出流{1}}方法。
有什么想法吗?
configure()
答案 0 :(得分:3)
从外观上看,javax.comm
API不会让单元测试的生活变得简单 - 它在类上很重要,而且在接口上也很轻松。
我的建议是为你需要在驱动程序中使用的每个javax.comm
类创建接口和适配器类。然后,您的驱动程序代码将与这些接口进行通信,而不是直接与javax.comm
进行通信。您可能只需要API的一个子集,定义这些接口可以帮助您阐明您的设计。
这将允许您在单元测试中使用这些接口的模拟实现(例如JMock,Mockito等)。您的单元测试可以将这些模拟注入到驱动程序对象中。
当用于实际时,驱动程序的configure()
方法可以实例化适配器类而不是模拟。
答案 1 :(得分:1)
如果我理解正确你想要测试devicedriver而不是使用设备驱动程序的模块。
是否可以使用集成测试而不是单元测试?如果你将串口-s rxdata和txdatapin以及带有cts引脚的rts连接起来,那么集成测试可以检查输入流中是否应该收到发送到outputstream的所有内容。