Как должны быть подготовлены данные для параметризованных тестов?

0

Недавно я начал использовать gtest и столкнулся с проблемой. Я хочу запустить набор тестов для файлов в папке, которые должны быть перечислены для этого. Мне удалось создать тест и создать экземпляр t с данными из списка файлов, но столкнулся с проблемой концептуального типа.

Я сделал, чтобы создать глобальный список для хранения имен файлов и заполнить его перед testing::InitGoogleTest вызывается. это работает.

Однако факт, что я использую глобальные переменные, беспокоит меня. Я попытался переместить инициализацию списка в моего собственного потомка testing::Environment, но это вызвало неудачу тестовых экземпляров. Чтобы быть более точным, список был заполнен, но тесты не выполнялись с использованием данных из него.

Итак, мои вопросы:

  1. Какими данными являются подвалы testing::Environment должны удерживаться?
  2. Каков был бы правильный способ инициализации параметризованных тестов с динамически сгенерированными списками?
Теги:
googletest

1 ответ

0
  1. Это полностью зависит от вас.
  2. Нет "правильного" способа. Если вы отменяете глобальные переменные, вы можете создать глобальную функцию или метод статического класса, который загружает тестовые параметры с диска и возвращает их в контейнере (вектор, список и т.д.) И использует этот метод в макроре экземпляра теста.

Например:

std::vector<std::string> LoadValuesFromDisc() {
  std::vector<std::string> result;
  // Fill in result with data here...
  return result;  // RVO will ensure there are no unnecessary copies.
}

INSTANTIATE_TEST_CASE_P(
    InstantiationName, TestFixture, testing::ValuesIn(LoadValuesFromDisc());
  • 0
    Кажется нелогичным, если честно. Может быть, мои ожидания о том, как эти части фреймворка должны взаимодействовать, просто отличаются от реальности. Может быть, я просто должен быть благодарен, что могу вообще запускать тесты по динамически генерируемым спискам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню