Boost Test Library запускает пакет дважды с разными "параметрами"
У меня есть набор тестов, которые можно запустить в нескольких разных режимах. За исключением некоторой глобальной конфигурации или конфигурации прибора, код тестового примера такой же.
Есть ли какой-нибудь способ в библиотеке буст-тестов, чтобы достичь этого без необходимости писать обертку вокруг всех отдельных тестовых случаев?
Обратите внимание, что это не должен быть ключ командной строки, он должен быть частью одного и того же выполнения.
1 ответ
Унарный функциональный тестовый пример, вероятно, то, что вы хотите. Единственным недостатком является то, что автоматическая регистрация (может быть основана на какой-то заводской функции), кажется, не поддерживается для этого.
У них также есть шаблон тестового примера, который имеет автоматическую регистрацию, поэтому можно было бы злоупотреблять им, определяя тип для каждой конфигурации, если их не слишком много.
Изменить: шаблон тестового примера может быть использован что-то вроде этого:
// 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 ¶m>
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
}