我想对一些偶尔使用assert()
的代码进行单元测试。具体来说,我想确保某些命令确实触发了断言。但是-我实际上不希望程序中止。 (如果发生这种情况,我既需要确保程序从程序外部中止,又需要为每个这样的测试用例使用不同的程序。)
我也知道assert()
是一个宏,因此如果我要测试的代码仅是标头,则理论上我可以使用单元测试库编写某种替换宏来触发失败({ {3}})。
我的问题:
注意:我已经注意到doctest,Google测试具有某种相关的功能,here on SO,但是我不清楚它是否可以完成我想做的事情。
答案 0 :(得分:2)
通常,您可以做的是生成一个子进程,在其中执行操作,并在父进程中测试该子进程是否成功终止,并可能检查该子进程生成的任何输出。我认为这就是Google的测试。
在C ++中没有标准的方法来产生子流程。该标准不承认其他过程的存在。多任务操作系统将为此提供API。在POSIX标准中,可以使用fork
函数创建子进程。