alt*_*ive 8 c testing unit-testing
我想对我的程序(在C中)进行单元测试,因为我知道这样做的好处,因为它显示了问题所在.
我也喜欢黑盒测试,因为它告诉我程序是否有效(至少,测试).
目前,我正在使用Autotest(随Autoconf一起提供)以便不添加依赖项.
在这一点上,我不介意使用更好的框架,但问题是我不想使用不同的框架进行黑盒和单元测试.是否可以从单元测试框架运行黑盒测试?我真正想要的是良好的日志输出,确切地说出了什么问题以及在哪里.
我的另一个选择是使用自动测试进行单元测试.问题是没有框架.我编写了一个小的"测试驱动程序",它接受要测试的函数的名称和传递给函数的参数,并调用该函数.问题是我不确定断言之间使用什么边界并输出函数的返回值(用于记录目的,因为我喜欢Autotest会给我一个差异).由于大多数函数返回列表,因此使用具有预期输出的diff(使用自动测试的expout)准备更快.
是否可以从单元测试框架运行黑盒测试?
system()是的,您可以从单元测试中调用自动测试,然后对返回值进行断言。
但我不建议这样做,因为单元测试执行得非常频繁,它们应该非常快,即以秒为单位测量,而不是以分钟为单位。
单元测试和集成测试(您称为黑盒测试)有不同的目的:单元测试验证代码中的单元(无论这意味着什么,函数或函数集群)是否按测试预期工作,而集成测试涵盖程序结束- 到最后,从整体上验证它。
因此,通常在代码中每隔几次更改后就会运行单元测试,特别是在应用 TDD 的情况下,而集成测试则在添加功能时执行。
我宁愿拥有一个带有断言的典型单元测试程序,以及一个除了黑盒测试之外还可以调用单元测试的集成套件。
问题是我不确定断言和输出函数的返回值之间使用什么边界(出于日志记录的目的,因为我喜欢自动测试如何给我一个差异)。
对于断言,没有任何内容可输出:要么预期值和实际值相等并且没有任何反应,要么它们不同并且 UT 框架打印出错误消息(预期值是 X,实际值是 Y)。那就是让计算机来做测试的工作。
通过记录输出差异,人们仍然需要手动(视觉)检查差异的结果(例如:列表中是否缺少一项或一项额外的项目......)。
由于大多数函数返回列表,因此使用 diff 和预期输出(使用自动测试导出)来准备会更快。
您可能想要编写一个使用断言比较列表的函数。
| 归档时间: |
|
| 查看次数: |
582 次 |
| 最近记录: |