Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2012, 17:51   #1
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию google unit tests. Работа с библиотекой gtest

Работать предполагается одновременно в windows7 и ubuntu

Скачал исходники gtest, собрал в студии 2008. Прилинковал к своему тестовому проекту.

Сконстурировал тестировочный модуль, дабы попрактиковаться с gtest.
Получил свой первый отчет о произведенных тестовых наборах.

Проблема: вывод отчета был осуществлён в стандартную системную консоль Windows, у которой почему то отсутствует вертикальная полоса прокрутки. Поэтому, я вижу только концовку отчета, а не весь отчет целиком.

Собственно, 3 вопроса:

1. Как сделать так, что бы в консоли была вертикальная прокрутка? (очень желательное)

2. Есть ли в gtest предусмотренный штатный способ вывода текста отчета
в обычный файл txt ? (Самое важное)

3. Есть ли возможность одновременно получить отчет и в консоли (с вертикальной полосой прокрутки), и в текстовом файле?

/ps файл с отчетом в xml не предлагать.

/pss править исходный код самой библиотеки рассматриваю как не очень правильный вариант. В таком случае, уж лучше перехватить сам stdout...

Последний раз редактировалось _Bers; 03.03.2012 в 17:54.
_Bers вне форума Ответить с цитированием
Старый 03.03.2012, 22:50   #2
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

А вам не проще перенаправить выходной поток в файл?
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 04.03.2012, 00:34   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от MooNDeaR Посмотреть сообщение
А вам не проще перенаправить выходной поток в файл?
Хочется, что бы и в консоль шёл вывод, и в файл
_Bers вне форума Ответить с цитированием
Старый 04.03.2012, 03:59   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
Хочется, что бы и в консоль шёл вывод, и в файл
По поводу полосы прокрутки, она должна быть, если нет, то кликнув в левом верхнем углу окна консоли, по пиктограмме, выберите "Настройки по умолчанию" и там, в одной из вкладок "Высота буфера". Поставьте в нём значение повыше (см. влож.)

По поводу второго, мне кажется, что Вам, как программисту, ничего не мешает написать простейшую программу, которая будет разбивать ввод на файлы, коли такой функционал необходим. Например так:
Код:
#include <stdlib.h>
#include <stdio.h>

#define CHUNK_SIZE 4096

int main (int argc, char * argv[]) {
  int i, readed;
  char chunk[CHUNK_SIZE];
  FILE ** outs = calloc (argc, sizeof (FILE*));

  outs[0] = stdout;

  for (i = 1; i < argc; i++) {
    outs[i] = fopen (argv[i], "w");
    if (outs[i] == NULL) {
      perror (argv[i]);
      return EXIT_FAILURE;
    }
  }

  while ((readed = fread (chunk, 1, CHUNK_SIZE, stdin)) > 0)
    for (i = 0; i < argc; i++)
      fwrite (chunk, 1, readed, outs[i]);

  for (i = 1; i < argc; i++)
    fclose (outs[i]);

  free (outs);

  return EXIT_SUCCESS;
}
И использовать так:
Код:
perform-tests | broadcast test.log
Изображения
Тип файла: jpg screen.jpg (28.7 Кб, 123 просмотров)

Последний раз редактировалось netrino; 04.03.2012 в 05:33.
netrino вне форума Ответить с цитированием
Старый 04.03.2012, 13:11   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Полосу прокрутки восстановил, спасибо Netrino))
Такая глупость, а я в итоге облазил все исходники, включая пакеты тестов для самого gtest, что б найти то место, которое изменяет размер консольного буфера)

Зато, получше узнал кухню gtest. Там дофига всего интересного. Вообще библиотека оформлена очень красиво. Её можно использовать, как образец для подражания - как делать правильные комментарии к коду, например.

И можно взять на вооружение архитектурные сооружения, и некоторые программерские трюки.

А вот по поводу отображения отчета - наверняка, такой качественный профессиональный инструмент, как gtest должен иметь штатные средства для удобной работы с формированием отчета.

И действительно, покопавшись в исходниках, я обнаружил, что за форму отчета отвечает специализированный класс, имеющий интерфейс, и одного конкретного потомка: так называемый "дефолтный принтер", который и выводит цветной текст в консольку.

Я унаследовался от интерфейса, и сваял свой собственный принтер. Все замечательно выводится в файл и без всяких там перенаправлений streams.

Но теперь мне захотелось, что бы у меня была возможность одновременно использовать несколько принтеров: например, дефолтный, и мой собственный.
Дефолтный по прежнему будет печатать отчет в консоль, а мой собственный следом - создавать несколько файлов, в которых будет хранится статистика тестов:

1. Не доработанные методы класса.
2. Обнаруженные баги.
3. Исправленные баги.
4. Ещё что нибудь, на основе чего, можно будет в будущем запилить красивую утилиту учета багов, и анализа "глючности" продукта. Утилита должна уметь выявлять самые "забагованные" классы, и выводить на терминал табличку "самый хреновый программер проекта". Хочу, что бы она мне все это дело умела отображать в виде симпатичных графиков)

А на каждый исправленный баг - своя запись о причинах возникновения, и способе устранения.

Так что продолжаю изучать инструмент) В свободное от работы время, так сказать.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка работы программы. Работа с библиотекой STL и шаблонами. С ++ Vasyl'eva Помощь студентам 1 25.12.2011 18:39
работа с библиотекой tinyxml zhenya.ya Общие вопросы C/C++ 0 19.04.2011 22:42
Работа со стандартной библиотекой С. Lag Общие вопросы C/C++ 0 30.05.2010 19:03
Работа с множествами. Вынести процедуры о отдельный Unit. [Delphi] sergey31 Помощь студентам 4 13.12.2008 12:39
Работа с Unit SunKnight Общие вопросы Delphi 2 16.02.2008 15:45