Швидкий старт з Google Test

  1. Завантажуємо архів із кодом, розархівуємо.
  2. У папці gtest-1.6.0\msvc є два файли: gtest.sln та gtest-md.sln. Це файли рішень (Solution) Visual Studio. Вони відрізняються опціями складання: gtest.sln збирає код з ключем /MT, а gtest-md.sln з ключем /MD. Якщо ви не знаєте, за що відповідають ці ключі, можете почитати, наприклад, тут чи тут. Ви повинні скомпілювати той самий варіант, з якими збирається проект, який ви збираєтеся тестувати.Це важливо, інакше отримаєте купу незрозумілих помилок лінкера.Перевірити, з якими ключами збирається ваш проект можна ось тут:

старт

Код Google Test успішно збирається Visual Studio 2008\2010 (іншими не пробував). На виході ви отримаєте файли gtestd.lib\gtest.lib (для дебаг та реліз конфігурацій). Зі збіркою на цьому все.

Hello world

  1. Відкриваємо Solution, який ви маєте намір тестувати. Додаємо до нього новий проект (консольне С++ додаток).
  2. У цей проект додаємо залежність від скомпілених на другому кроці бібліотек gtestd.lib\gtest.lib, шлях до include-папки Google Test, залежності до тих проектів у вашому рішенні, які ви збираєтеся тестувати.

проект

проект

Пишемо в головному файлі тестового проекту наступний код:

  • Запускаємо тестовий проект. Бачимо таке:
  • Номер один

    Не помиліться з вибором рішення, що компілюється, на другому кроці. Якщо помилитеся і забудете - з'ясувати в чому помилка пізніше буде практично не реально.

    Якщо ви плануєте рознести основний тестовий додаток та самі тести з різних проектів, ви зіткнетеся з однією хитрою проблемою. Справа в тому, що гуглівські юніт-теси по суті є статичними класами та компілятор Visual C++ через наявний нимБага просто викине ці класи під час компіляції. Щоб уникнути цього бага, потрібно викрутитися способом, описаним ось тут.

    Не забувайте, що статичні бібліотеки, що тестуються, потрібно мало додати в залежності (Dependencies) тестового проекту, їх потрібно додати в посилання (References), інакше отримаємо помилки лінківки.

    Додаткові матеріали

    Успіхів у тестуванні. З Новим Роком!