非中止断言 CppUnit
Non aborting assertion CppUnit
我在测试函数中使用了多个断言,但是当(例如)第一个断言失败时,其余断言不再执行。有没有办法使用 CppUnit 做出断言 (CPPUNIT_ASSERT),在失败后不会离开测试函数?例如,非中止断言。
我发现这个:http://cppunit.sourceforge.net/cppunit2/doc/但库中没有实现"CHECK"。
关于单元测试有两种思想流派。一个是单元测试应该只测试一件事,如果你想测试两件事,你应该有两个测试。优点是完全消除了您上面描述的问题,而缺点是编写额外的测试需要额外的几秒钟。另一个想法是,测试可以测试多个东西,认为失败的测试很少发生,并且可以被开发人员识别并修复。优点是复杂的设置只需要执行一次,当然缺点是它在第一次失败时停止测试,隐藏问题的真实数量和身份。
我的做法是务实。如果你可以摆脱多个断言,并且仍然通过一个测试开发和轻松测试多个属性,那就去做吧——但要为失败做好准备,如果你陷入你描述的情况,快速将测试重构为多个测试,不要浪费时间在一个测试上挣扎。测试的总数绝对是一个非因素。适当的测试次数是全面评估代码所需的数量。
使用下面定义的CPPUNIT_VFY(cond),而不是使用CPPUNIT_ASSERT(cond):
#define CPPUNIT_VFY(cond) {
try {
CPPUNIT_ASSERT(cond);
} catch(std::exception& e) {
std::cerr << ">>>> EXCEPTION:<" << __LINE__ << ":" << ++xcount << "> " << e.what() << std::endl;
} }
您需要在 CppUnit 派生的测试类中声明 xcount 并在 setup() 方法中初始化它。这将打印递增的失败计数。上面的宏将打印所有断言,而不会在第一次失败时退出,例如
>>>> EXCEPTION:<140:1> assertion failed
- Expression <whatever>
>>>> EXCEPTION:<163:2> assertion failed
- Expression <whatever>
etc.
请参阅上述<>内的上述数字。左侧是断言失败的行号,右侧是失败计数。
相关文章:
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 尝试使用 std::vector<std::thread时出现静态断言失败错误>
- uint_not_usable_without_attribute在业力规则中使用数字生成器时静态断言失败
- C++ 使用增强正则表达式库时断言崩溃
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- 如何将向量断言到特征矩阵
- OpenCV - Python 断言错误:SAD 算法 - 立体相机视差图计算
- 使用 Google Test 对自定义断言函数进行单元测试
- 断言"id < 0"在Qt ActiveX中失败
- 初始值设定项列表构造和静态断言
- 在 CppUnit 中测试中止断言失败
- 使用扫描的调试断言失败
- MS 本机单元测试 - 断言::线程失败不起作用
- 如何断言 CRTP 的函数为最终函数?
- 当Cppunit断言失败时,如何显示十六进制值
- 断言迭代器在 CppUnit 中相等
- 非中止断言 CppUnit
- 使用 CppUnit 和 TFS2015 时"断言失败"消息不完整
- 如何使用 cppunit 断言宏来检查返回数据类型的预处理器值
- 使用CPPUnit打印样式断言