繁体   English   中英

单元测试-如何进行?

[英]Unit Testing - How to go about it?

我想对程序进行单元测试(用C语言编写),因为我也知道这样做的好处,因为它表明了问题所在。

我还喜欢对黑匣子进行测试,因为它会告诉我该程序是否有效(至少对于测试而言)。

目前,我正在使用自动测试(Autoconf随附),以便不添加依赖项。

在这一点上,我不太介意使用更好的框架,但是问题是我不想为黑盒测试和单元测试使用其他框架。 是否可以从单元测试框架运行黑盒测试? 我真正想要的是良好的日志输出,确切地说出问题所在和出处。

我的另一个选择是使用自动测试进行单元测试。 问题是没有框架。 我编写了一个小的“测试驱动程序”,它接受要测试的函数的名称以及传递给该函数的参数,然后调用该函数。 问题是我不确定在断言和输出函数的返回值之间要使用什么边界(出于日志记录的目的,因为我喜欢自动测试将如何给我带来差异)。 由于大多数函数都返回列表,因此使用带有预期输出的差异(使用自动测试展开)可以更快地进行准备。

是否可以从单元测试框架运行黑盒测试?

是的,您可以从单元测试中使用system()调用自动测试,然后对返回的值进行断言。

但是我不建议这样做,因为单元测试经常执行,因此它们应该非常快,即以秒为单位,而不是以分钟为单位。

单元测试和集成测试(您称为黑盒测试)具有不同的用途:单元测试验证代码中的单元 (无论是什么意思,功能或功能簇)按测试的预期工作,而集成测试覆盖程序结尾-端,整体验证。

因此,通常在代码中每进行几处更改后就进行单元测试,尤其是在应用TDD时,而集成测试是在添加功能后执行的。

我宁愿有一个带有断言的典型的单元测试程序,以及一个集成套件,该套件可以在您的黑盒测试之外调用单元测试。

问题是我不确定在断言和输出函数的返回值之间要使用什么边界(出于日志记录的目的,因为我喜欢自动测试将如何给我带来差异)。

使用断言时,没有任何输出:期望值和实际值相等,什么也没有发生,或者它们不相同,并且UT框架打印出错误消息(预期为X,实际为Y)。 那就是让计算机来做测试的工作。

使用日志输出diff时,仍然需要手动(直观地)检查diff的结果(例如:列表中是否缺少一项或其他项……)。

由于大多数函数都返回列表,因此使用带有预期输出的差异(使用自动测试展开)可以更快地进行准备。

您可能想编写一个使用断言比较列表的函数。

您可能需要使用CMake随附的CTest,CMake是具有许多后端的跨平台制作系统: http : //www.cmake.org/Wiki/CMake#CTest

PS:CMake也比自动工具强大得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM