所以,我有下面的代码位。 无论什么样的内插器类的细节,就应该在这种情况下,不会抛出异常,这就是我想测试。
TEST(errorhandlingInterpolator, toolargeInput) {
const size_t numSamples = 100000;
std::array<double, numSamples> bf{{0.0, 0.5, 1.0, 0.0, 0.5, 0.0}};
std::array<double, numSamples> ts{{0.0, 0.0, 0.0, 0.5, 0.5, 1.0}};
std::array<double, numSamples> current{ {0.13, 0.83, 0.96, 0.22, 0.30, 0.54} };
ASSERT_NO_THROW( [&](){
Interpolator<double, double, double, numSamples> intp(bf, ts, current);
});
}
不幸的是,我得到以下错误(有或没有lambda函数)。 我裹在拉姆达构造函数调用得到相同的错误更早了。
.../test/main.cpp:34: error: macro "ASSERT_NO_THROW" passed 4 arguments, but takes just 1
});
^
这不是一个致命破坏的问题。 我可以总结我的代码,然后可以自动返回AssertionSuccess()或AssertionFailure(),它然后可以在断言检查“正常”的功能,但它似乎不是很好。
我可以从我与闭锁测试框架,测试与REQUIRE_NOTHROW()例如一个例外,从构造函数有可能在宏观马上经验告诉。 即使是拉姆达会一直不必要的。
如果我没有在使用谷歌测试框架犯了一个错误,我会感到惊讶。
我去了以下两个文档寻找我的问题的解决方案,但没有转诊似乎它。
https://github.com/google/googletest/blob/master/googletest/docs/advanced.md
https://github.com/google/googletest/blob/master/googletest/docs/primer.md