我在寫一個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