2012-05-17 93 views
3

我正在开发一个项目,其中开发和目标环境有很大不同。目标环境有不同的外设,IO卡等,我的项目经常使用这些外设。而我的开发环境缺乏这些外设。因此,在我的开发盒上进行单元测试在大多数情况下是无用的。C++远程单元测试

我正在使用Eclipse CDT和远程调试插件,我正在通过网络进行调试,我想更好地使用单元测试,并基于上述事实,我在想我最好的选择是什么。到目前为止,我一直在为我添加的每个新功能编写测试程序,并使用远程调试对其进行测试,但由于编写测试和执行测试需要大量时间,因此它似乎是一种效率低下的测试方式。

有什么建议吗?

回答

1

在这样的环境下,如果没有昂贵的工具就很难做到。我认为最好的解决方案就是像以前一样编写测试程序,但将它们合并成一个程序,您可以启动一次,让它运行所有测试,而无需手动干预。我用这个Boost Test library

真正的关键是弄清楚如何编写测试,以便他们能够自我检查。您不希望测试代码执行某些操作,需要您手动验证结果。这可能意味着在其他地方运行第二个程序,该程序监视目标环境外围设备的输出,并在与测试代码应该发送的内容不匹配的情况下投诉。毕竟,测试旨在验证正确性,而不仅仅是证明某些东西不会崩溃。

当然,测试也需要智能编写。如果您正在设计通信协议和网络驱动程序,则可能需要远程测试代码来确认正在从网络端口发送正确的字节,但您不需要此来测试您的通信协议。测试代码可以创建一个虚拟网络设备并运行协议测试(甚至可以在您的开发环境中运行),因此您应该能够在开发环境中本地测试除硬件驱动程序之外的所有内容。

+0

谢谢,我也这么认为,我会将我所有的测试结果合并到一个程序中,并尝试Boost测试库。 –