如何测试断言?

问题描述

| 我正在使用一个单元测试框架来测试我的库。我在库中有很多断言,以确保在调试版本中捕获程序员错误。现在,我要确保正在测试所有可能的程序员错误。 例如。在Table类中,我要确保行和列的传递不大于表中的行和列。假设我忘了测试cols。我想让我的单元测试在断言应该触发的地方执行测试,如果没有,则使测试失败。那可能吗?     

解决方法

        问题就变成了您打算重构代码,以便如果发生这种情况,您将引发异常,而不是依靠
<cassert>
功能将您带入一个问题?如果是这样,则只需检查是否引发了异常。如果不是,那么从
<cassert>
测试断言语句将变得更加困难。像CUTE这样的单元测试框架有一个用于异常测试的ѭ2just宏。我会检查您的框架。 同样,我工作过的商店也是如此,他们不赞成断言,更喜欢例外。呼叫
abort
不利于自动测试。实际上,它禁止这样做。只是我的两分钱。     ,        有三种可能的方式: 将断言转换为异常,或者 运行每个测试一个单独的程序,您(或测试框架)检查其退出代码,或者 让一个触发的断言,编写有关其自身的信息,然后测试框架可以获取该信息。 据我所知,尚无商业或广泛使用的单元测试框架支持后两种方式。我已经使用了过程退出代码检查来进行爱好编程,但是仅使用了一个用Python和C ++实现的小型个人单元测试框架(“爱好编程”:这意味着我没有很好的数据证明它可以很好地扩展到大规模编程) )。流程退出代码测试的主要情况是代码具有静态断言,您希望确定它们在预期时会被触发。 总结,使用现有的测试框架,转换成异常是AFAIK的唯一选择。 干杯和健康。     ,        答案取决于您使用的特定测试框架,在Google中搜索很少可能会找到答案。 “提升单元测试测试断言”的第一个命中指向StackOverflow中的此问题:在Boost测试框架中测试断言 \“ cppunit test assert \”的第二个命中指向此文档页面: 断言 尝试在互联网上搜索您的具体框架。