[英]Boost Test: How to write parameterized test cases
我有一个提升测试用例。 无论参数如何,都会执行此测试用例的大多数行。 但是有些部分是根据提供的参数执行的。 我想避免编写两个单独的测试用例,除了一些小部分之外,它们几乎完全相同。 所以我需要使用类似以下方法来创建参数化测试用例:
BOOST_FIXTURE_TEST_CASE(caseA, Fixture)
{
TestFunction("parameterA");
}
BOOST_FIXTURE_TEST_CASE(caseB, Fixture)
{
TestFunction("parameterB");
}
void TestFunction(string param)
{
// ...
// lots of common checks regardless of parameters
// ...
if(param == "parameterA")
BOOST_CHECK(...);
else if(param == "parameterB")
BOOST_CHECK(...);
}
有没有其他方法可以更方便地实现我的目标? 我可以找到BOOST_PARAM_CLASS_TEST_CASE宏,但我不确定它在这种情况下是否相关。
没有 Boost 支持 AFAIK,所以我这样做:
void test_function(parameters...)
{
<test code>
}
BOOST_AUTO_TEST_CASE(test01) {
test_function(parameters for case #1)
}
BOOST_AUTO_TEST_CASE(test02) {
test_function(parameters for case #2)
}
如果您喜欢模板,您可以使用它们:
template<int I, bool B>
void test_function()
{
for(int i=0; i<I; i++)
if (B) BOOST_REQUIRE(i<10);
}
BOOST_AUTO_TEST_CASE(test01) {
test_function<10, true>();
}
BOOST_AUTO_TEST_CASE(test02) {
test_function<20, false>();
}
查看 BOOST_DATA_TEST_CASE 它完全满足您的需求。 boost 1.62 中的新功能。
(这个问题有点老了,但是当我搜索如何做到这一点时,这是第一次命中)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.