用于单元测试的“Echo”设备

时间:2009-05-14 20:49:58

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

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


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

Ex:设备的行为如下:

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

2 个答案:

答案 0 :(得分:5)

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

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

在第二个终端上:

cat /dev/test

然后第一个将解锁,第二个将显示文本!

答案 1 :(得分:4)

您可以使用

创建一个
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/