Проблема с управляемыми данными модульными тестами с Google Test - PullRequest
0 голосов
/ 08 января 2020

У меня проблема с разработкой на основе данных с помощью gtest, я последовал совету по этому вопросу:

Модульные тесты на основе данных с google test

и когда Я правильно его скомпилировал, обнаружил 10 тестовых сценариев ios, которые у меня есть во входном файле, но затем, когда я выполняю ctest -R testDemo, каждый из 10 тестов снова проходит через входной файл, и для каждого теста используется только последняя запись, поэтому Я заканчиваю тестирование 10 раз одним и тем же, и, очевидно, только последний тест проходит. Вы уже сталкивались с этой проблемой раньше, и нужно ли что-то предпринять, чтобы предотвратить это.

Примерно так выглядит мой тест:

class testingFooBar
{
  private:

  public:
    int in_value;
    int *expected_values;
    testingFooBar(){
      this->expected_values = new int[10];
    }

    friend std::istream &operator>>(std::istream &is, testingFooBar & in)
    {
      is >> in_value >> expected_values[0] >> expected_values[1] >> .. until [9];
      return is;
    }
};

class testingFooBarFixture : public ::testing::TestWithParam<testingFooBar> {
    public:
};

TEST_P(testingFooBarFixture, test)
{
  testingFooBar testS = GetParam();

  int result[10] = functionUnderTest(testS.in_value);
  EXPECT_EQ(result[0], testS.expected_values[0]);
}

std::ifstream inputFile;
INSTANTIATE_TEST_CASE_P(testingFooBarTest, testingFooBarFixture, 
                   ::testing::ValuesIn(std::istream_iterator<testingFooBar>(inputFile), 
                                       std::istream_iterator<testingFooBar>()));

int main(int argc, char **argv) 
{
   inputFile.open("inputFile.txt");
   testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
}

Входной файл, скажем, выглядит как-то как это

1
1 2 3 4 5 6 7 8 9 0
2
0 9 8 7 6 5 4 3 2 1

Когда я компилирую тест, gtest фактически находит 2 разных теста (я добавил несколько отпечатков в оператор <<, чтобы убедиться, что он прошел все), когда я запускаю тест, однако он запускает оба тесты, но затем каждый тест снова читает файл (я могу видеть все << отпечатки снова в каждом из тестовых прогонов), и оба заканчивают тестирование последней записи: </p>

2
0 9 8 7 6 5 4 3 2 1

Как я могу предотвратить это? от происходящего? Есть ли у вас какие-либо предложения относительно того, что может быть не так?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...