小编E.B*_*oît的帖子

单元测试具有不可预测的外部依赖性的代码

我参与了一个项目,除其他外,必须控制各种实验室仪器(机器人,读者等......)

大多数这些仪器都是通过基于DCOM的驱动程序,串行端口或通过启动具有各种参数的专有程序来控制的.其中一些程序或驱动程序包括模拟模式,有些则不包括.显然,我的开发计算机无法连接到所有仪器,虽然我可以为驱动程序包含模拟模式的仪器启动虚拟机,但如果没有实际仪器,则无法测试某些内容.

现在,我自己的代码主要不是关于仪器的实际操作,而是关于启动操作,确保一切正常,并在它们之间进行同步.它是用Java编写的,使用各种库与仪器及其驱动程序进行交互.

我想为各种仪器控制模块编写单元测试.但是,因为仪器可以在很多方面失败(其中一些是记录的,其中一些不是),因为代码依赖于这些部分随机输出,我对于如何为这些部分编写单元测试有点迷失.我的代码.我考虑过以下解决方案:

  • 只测试连接的实际仪器,可能是最准确的方法,但它根本不实用(在读卡器中插入板,运行单元测试,移除板,运行单元测试等......),更不用说有潜在危险了,
  • 使用模拟对象来模拟与事物实际通信的部分; 虽然这个肯定更容易实现(和运行),但它可能无法再现所有潜在的失败(如上所述,很多都是无证的,有时会导致不良意外)

虽然我目前正在考虑与后者合作,但我错过了一些东西吗?有一个更好的方法吗?

java junit robotics

6
推荐指数
1
解决办法
331
查看次数

cppcheck错误:危险的迭代器用法

代码:

for(x=abc.begin();x!=abc.end();x++)  
{  
   if(-----)  
   {
      ----  
      abc.erase(x);  
   }
}
Run Code Online (Sandbox Code Playgroud)

错误是:::
Dangerous iterator用法
擦除后迭代器无效,因此解除引用或将其与另一个迭代器进行比较无效.

在上面的代码中使用擦除功能的错误用法是什么?

c++ erase libstdc++

4
推荐指数
2
解决办法
2337
查看次数

标签 统计

c++ ×1

erase ×1

java ×1

junit ×1

libstdc++ ×1

robotics ×1