关于单元测试的建议,要测试的类依赖于Java串口

时间:2011-02-26 17:37:30

标签: unit-testing junit javax.comm

我正在研究一个大型的遗留Java应用程序。它已经有一个广泛的现有框架来处理设备驱动程序。我需要为通过JavaComm连接到串行端口的设备创建新的设备驱动程序。

现有驱动程序只是在其configure()方法中创建新的串行端口,然后从串行端口对象创建新的输入和输出流,然后将这些输入和输出流用于设备通信,但没有单元测试

我希望我的新类可以进行单元测试,但是如果它能够适应这个现有的框架,我希望如何能够实现这一点,而现有框架将在{{\ n}中设置串口,输入和输出流{1}}方法。

有什么想法吗?

configure()

2 个答案:

答案 0 :(得分:3)

从外观上看,javax.comm API不会让单元测试的生活变得简单 - 它在类上很重要,而且在接口上也很轻松。

我的建议是为你需要在驱动程序中使用的每个javax.comm类创建接口和适配器类。然后,您的驱动程序代码将与这些接口进行通信,而不是直接与javax.comm进行通信。您可能只需要API的一个子集,定义这些接口可以帮助您阐明您的设计。

这将允许您在单元测试中使用这些接口的模拟实现(例如JMock,Mockito等)。您的单元测试可以将这些模拟注入到驱动程序对象中。

当用于实际时,驱动程序的configure()方法可以实例化适配器类而不是模拟。

答案 1 :(得分:1)

如果我理解正确你想要测试devicedriver而不是使用设备驱动程序的模块。

是否可以使用集成测试而不是单元测试?如果你将串口-s rxdata和txdatapin以及带有cts引脚的rts连接起来,那么集成测试可以检查输入流中是否应该收到发送到outputstream的所有内容。