Re[11]: Типовые задачи на собеседованиях по программированию
От: antonio_banderas Россия  
Дата: 19.12.16 13:46
Оценка:
Здравствуйте, 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.
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.