【发布时间】:2015-11-19 17:54:03
【问题描述】:
我正在编写一个 JUnit 测试来测试我的应用程序。该应用程序是用 Java 编写的,并使用 purejavacomm 库。为了测试串行解析器,我想设置一个虚拟串行端口,以便测试可以与解析器通信。除了简单解析之外,它还会在可用时动态连接到串口,所以我不想使用,比如PipedInputStream。
此库仅查找以 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)的用户权限,他们都拥有我的用户所在的组 dialout(用户:root)。
我是否忽略了具有权限的内容?有没有更好的方法来一起完成这一切?
【问题讨论】:
-
如果我以 root 身份运行(测试没有),我可以将
ptys 符号链接到ttySs。我认为这就是link=标志的作用,对吗? -
你不能简单地mock purejavacomm 类吗?