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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2017, 00:14   #11
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Я добавляю GTest исходниками, то есть создаю в проект папку Libs, в ней две папки: googletest и googlemock, а в них забрасываю пары папок: "include" и "src". GMock нужен для создания Mock'ов, но вы пока этот фреймворк не трогайте, попробуйте сначала запустить GTest.

Для GTest я делаю так. Создаю решение с двумя проектами: один целевой, а другой с тестами, чтобы отдельно было, не мешать основной проект с unit-тестами.

Например:
- решение: Calculator
- первый проект: Calculator
- второй тестовый проект: Calculator_Test

Я сделал наброски теста. Попробуйте скачать архив Calculator.zip, переключитесь на проект Calculator_Test, сделайте Build, откройте окно Test Explorer и оттуда запустите тесты. Только нужно поставить обязательно Google Test Adapter. Он ставится просто скачиванием и запуском.

Интересно, запустится у вас тест из моего проекта.

Там простейший тест, который проваливается потому что 1 не равно 2:
Код:
#include <gtest/gtest.h>

TEST(Add, FivePlusSeven)
{
    EXPECT_EQ(1, 2);
}

int main(int argc, char** argv)
{
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
8Observer8 вне форума Ответить с цитированием
Старый 29.12.2017, 14:49   #12
покайфуежи
Пользователь
 
Регистрация: 27.12.2017
Сообщений: 13
По умолчанию

то, что доктор прописал. спасибо.
покайфуежи вне форума Ответить с цитированием
Старый 29.12.2017, 15:40   #13
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Обратите внимание на такие вещи:
  • В настройках тестового проекта нужно добавить в поле "C/C++" -> "General" -> "Additional Include Directories" три строки:
    Код:
    $(SolutionDir)Libs\googletest\include
    $(SolutionDir)Libs\googletest
    $(SolutionDir)Calculator
  • В тестовый проект нужно добавить "gtest-all.cc". Для этого кликнуть правой кнопкой по названию тестового проекта и выбрать "Add" -> "Existing Items" -> выбрать файл "Libs\googletest\src\gtest-all.cc"
  • В тестовый проект нужно добавить все .cpp файлы, которые вы будете тестировать. Для этого кликнуть правой кнопкой по названию тестового проекта и выбрать "Add" -> "Existing Items" -> выбрать файлы .cpp, которые вы будете тестировать, например, "Calculator.cpp"
  • Не забывайте, что тестовый проект нужно сначала собрать (вызвать "Build"), только тогда тесты появятся в окне "Test Explorer".

Последний раз редактировалось 8Observer8; 29.12.2017 в 19:42.
8Observer8 вне форума Ответить с цитированием
Старый 30.12.2017, 10:16   #14
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Чтобы наглядно продемонстрировать работу с Google Test, я создал маленький пример в Visual Studio 2015: Calculator.zip

Исходники GTest лежат в папке "Libs" и подключены к проекту. Вы можете запустить тесты из окна "Test Explorer". Нужно, чтобы был установлен Google Test Adapter. Тестовый проект необходимо собрать (нажать "Build"), чтобы тесты появились в окне "Test Explorer". Перед запуском тестов часто нужно делать "Clean" -> "Build".

Если нужно сделать отладку тестов, то нужно очистить тестовый проект и сделать сборку ("Clean" -> "Build"). Далее, поставить точку останова, кликнуть в "Test Explorer" правой кнопкой мыши по выбранному тесту и выбрать "Debug Selected Tests"

В проекте Calculator_Tests два теста:

Код:
#include <gtest/gtest.h>

#include "Calculator.h"

TEST(Add, FivePlusSeven)
{
    int a = 5;
    int b = 7;
    int expected = 12;

    int actual = Calculator::Add(a, b);

    EXPECT_EQ(expected, actual);
}

TEST(Sub, FiveMinusSeven)
{
    int a = 5;
    int b = 7;
    int expected = -2;

    int actual = Calculator::Sub(a, b);

    EXPECT_EQ(expected, actual);
}

int main(int argc, char** argv)
{
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
Которые тестирую два метода (Add и Sub) из проекта Calculator:

Calculator.h

Код:
#pragma once

class Calculator
{
public:
    Calculator();
    ~Calculator();

    static int Add(int a, int b);

    static int Sub(int a, int b);
};
Calculator.cpp

Код:
#include "Calculator.h"

Calculator::Calculator()
{
}

Calculator::~Calculator()
{
}

int Calculator::Add(int a, int b)
{
    return a + b;
}

int Calculator::Sub(int a, int b)
{
    return a - b;
}
Calculator.png
8Observer8 вне форума Ответить с цитированием
Старый 30.12.2017, 16:15   #15
покайфуежи
Пользователь
 
Регистрация: 27.12.2017
Сообщений: 13
По умолчанию

8Observer8, выручили благодарствую
покайфуежи вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Studio 2012 stu_dent Софт 0 09.11.2016 06:20
Google test в Visual Studio 2013 mns_14 Общие вопросы C/C++ 18 29.05.2016 13:43
Microsoft Visual Studio 2012 PaShа Софт 9 17.04.2015 13:30
Visual Studio 2010-2012 Генрюсай Visual C++ 0 29.05.2013 22:49