使用不同的“参数”两次提升测试库运行套件

时间:2011-06-21 12:14:45

标签: c++ boost boost-test

我有一套可以在几种不同模式下运行的测试。除了一些全局配置或夹具配置,测试用例代码是相同的。

在boost测试库中是否有某种方法可以实现这一点而无需在所有单个测试用例周围编写包装器?

请注意,这不是命令行开关,它应该是同一执行的一部分。

1 个答案:

答案 0 :(得分:3)

unary function test case可能就是你想要的。唯一的缺点是自动注册(可能基于某种工厂功能)似乎不支持它。

他们也有test case template并且确实有自动注册,所以如果没有太多的配置,可以通过为每个配置定义类型来滥用它。

编辑:测试用例模板可以使用如下:

// Parameter is the type of parameter you need. Might be anything from simple int (in
// which case the template parameter may be a value, not reference) to complex object.
// It just has to be possible to create (static) global instances of it.

template <const Parameter &param>
struct Fixture {
    // do whatever you want, param is normal object reference here
    // it's not a member, but you can:
    const Parameter &getParameter() { return param; }
}

static Parameter p1(whatever);
static Parameter p2(something_else);
// ...

typedef boost::mpl::list<Fixture<p1>, Fixture<p2> > Fixtures;

BOOST_AUTO_TEST_CASE_TEMPLATE(test, F, Fixtures)
{
    F fixture; // Unfortunately you can't make it true fixture, so you have to have instance
    // Test what you want
}