rtu*_*ado 5 c++ boost unit-testing
我有以下代码:
bool f()
{
command = "mkdir -p /\/\/";
result = aSystemCall(command);
if (result == ...
}
BOOST_AUTO_TEST_CASE(BadDir)
{
BOOST_CHECK_EQUAL(false, f());
}
Run Code Online (Sandbox Code Playgroud)
如果我command
在命令行中执行,则会收到权限被拒绝错误。我知道这一点。这正是我想要测试的。
aSystemCall
将命令作为子进程执行。当子进程以该命令的非零错误退出时,aSystemCall
返回错误。它不会扔。
如果我BadDir
在命令行中运行测试用例,后面的代码aSystemCall
永远不会执行,测试失败,输出如下:
mkdir: cannot create directory '/\/\/': Permission denied
unknown location(0): fatal error in "BadDir": child has exited; pid: 25356; uid: 19753; exit value: 1
test.cpp(100): last checkpoint
Leaving test case "BadDir"; testing time: 10ms
Leaving test suite "Test"
Leaving test suite "Master Test Suite"
Run Code Online (Sandbox Code Playgroud)
如果我BadDir
在 gdb 中运行测试用例,aSystemCall
返回,可以检查结果,并且测试通过。
有没有办法告诉 boost::unit_test 过滤掉像这样的可能错误,以便继续执行?我已经试过了BOOST_AUTO_TEST_CASE_EXPECTED_FAILURE(blah, 1)
,但这只是告诉 boost::unit_test 你期待失败。它报告在测试中检测到的失败(预期失败)。我想要一个通过的测试情况。
这个问题在 Boost.Test 的更高版本中得到解决
归档时间: |
|
查看次数: |
2534 次 |
最近记录: |