У меня проблема с разработкой на основе данных с помощью 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
Как я могу предотвратить это? от происходящего? Есть ли у вас какие-либо предложения относительно того, что может быть не так?
Спасибо