【问题标题】:"Echo" device for Unit Testing用于单元测试的“Echo”设备
【发布时间】:2010-10-26 07:50:22
【问题描述】:

我目前正在为测试硬件通信端口的程序编写一些 CPPunit 测试(是的,我正在为测试应用程序编写单元测试 ;-))。我正在测试的一个类基本上是设备文件描述符的包装器;我对文件描述符进行read()write() 调用。 Linux 上是否有设备文件/驱动程序,如果您向它write(),当您从它read() 时,您会读回您写的内容(如 FIFO 队列设备)?如果我有这个设备文件,在我的包装器中替换实际的设备文件真的很简单,并且可以很容易地模拟现实世界硬件上可能发生的“环回”场景。


基本上我正在寻找的是一种假设的"/dev/echo" 设备。

例如:设备的行为如下:

open("/dev/echo", O_RDRW);

write(fdEcho, 123, sizeof(int));
write(fdEcho, 456, sizeof(int));
write(fdEcho, 789, sizeof(int));

read(fdEcho, iData,  sizeof(int);  // returns 123
read(fdEcho, iData2, sizeof(int);  // returns 456
read(fdEcho, iData3, sizeof(int);  // returns 789

【问题讨论】:

  • 感谢您的回复;我已经使用 /dev/echo 发现了几个错误!

标签: c++ linux unit-testing linux-device-driver cppunit


【解决方案1】:

为什么不在文件系统中使用 UNIX 管道?

mkfifo /dev/test
echo test > /dev/test

在第二个终端上:

cat /dev/test

然后第一个会解锁,第二个会显示文字!

【讨论】:

    【解决方案2】:

    你可以做一个

    mknod /dev/echo p
    

    第一个参数是文件名(可以是任何文件名,不必在/dev),第二个参数是p,表示“管道”。

    参考:http://www.unix.com/unix-dummies-questions-answers/22205-unix-pipe.html

    您还可以查看pipe() C 函数:http://www.manpagez.com/man/2/pipe/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-29
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多