我在写一个JUnit测试来测试我的应用程序。该应用程序使用Java编写,并使用purejavacomm库。为了测试串行解析器,我想设置一个虚拟串行端口,以便测试可以与解析器进行通信。除了简单的解析之外,它还可以动态连接到串行端口,因此我不想使用它,比如PipedInputStream
。socat两个串口一起
此库仅查找以ttyS
,ttyUSB
或ttyACM
开头的设备文件。正因为如此,我不能做常规(这将产生/dev/pts/x
串口):
socat -d -d pty,raw,echo=0 pty,raw,echo=0
我试图做:
socat /dev/ttyS20 /dev/ttyS21
,但它不工作。它不会退出或打印错误。我试图用屏幕连接到/dev/ttyS20
,但它只是说,[screen is terminating]
。
我查看了ttyS20
(和21)的用户权限,他们都拥有我的用户在(chris)中的用户组dialout
(user:root)。
我可以忽略权限吗?有没有更好的方法一起做到这一点?
如果我以root身份运行(测试没有),我可以将'pty'符号链接到'ttyS's。我认为这就是'link ='标志虽然正确吗? –
你不能简单[mock](https://en.wikipedia.org/wiki/Mock_object)purejavacomm类吗? – vlp