use*_*271 3 c++ unit-testing googletest
我想用Google Test测试这个功能:
foo() {
if(some_grave_error)
exit(1);
// do something
}
Run Code Online (Sandbox Code Playgroud)
如果foo打电话,我希望我的测试失败std::exit().我该怎么做呢?它与EXPECT_EXIT的作用相反?
你应该foo()测试:
using fexit_callback = void(*)(int);
void foo(fexit_callback exit = &std::exit)
{
if(some_condition)
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
神奇的是,你所有的麻烦都消失了:
#include <cstdlib>
#include <cassert>
using fexit_callback = void(*)(int);
void foo(fexit_callback exit = &std::exit)
{
if(true)
exit(1);
}
namespace mockup
{
int result = 0;
void exit(int r) { result = r; }
}
int main()
{
foo(mockup::exit);
assert(mockup::result == 1);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |