Здравствуйте, AlexGin, Вы писали:
AG>А почему же не сделать сохранение результатов в коллекции — например в коллекции типа std::vector<string>
AG>и в юнит-тесте уже данную коллекцию с выходными результатами крутить?
Потому что код должен быть един — для основной задачи и для тестов.
А у тебя для основной задачи один код (printf), а для тестов другой код (vectOutStrings.push_back).
Чем это плохо? Тем, что по факту тесты не проверяют основной код. Они проверяют код для тестов.
AG>Как вариант — это сохранение в вектор подключать через опцию препроцессора.
Такие ветвления очень усложняют чтение и дальнейшую поддержку. И проблема с двумя разными кодами остается.
Два минуса и ни одного плюса.
Решение — возвращать строку, и потом её выводить на консоль. А тесты эту строку будут просто разбирать и проверять.
std::string composeTask()
{
// здесь мы всё накидываем в строку.
}
void printTask()
{
std::cout << composeTask() << std::endl;
}
SOME_TEST_MACRO()
{
std::string result = composeTask();
// а здесь разбираем и оцениваем result.
}