c++ - "Echo"单元测试设备

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

我目前正在为测试硬件通信端口的程序编写一些 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

最佳答案

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

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

在第二个终端上:

cat /dev/test

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

关于c++ - "Echo"单元测试设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/865689/

相关文章:

linux - 使用 curl 复制本地文件

python - 测试对象的初始化并使用它

c# - 如何正确地对该方法进行单元测试?

linux - grep - 限制读取的文件数

c++ - 面向 Eclipse 用户的 QtCreator

c++ - 通过结构将动态数组传递给 pthreads

c++ - Boost::graph 获取到根的路径

linux - 为什么在 shell 脚本中使用 ${@+"$@"}?

unit-testing - 用mockito模拟的方法(带有可选参数)在单元测试中返回null。 Dart flutter

c++ - QTreeWidget : Windows Explorer-like editing