Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 29.12.2017, 01:14   #11
8Observer8
Профессионал
 
Регистрация: 02.01.2011
Сообщений: 3,260
Репутация: 915
По умолчанию

Я добавляю 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, 15:49   #12
покайфуежи
Пользователь
 
Регистрация: 27.12.2017
Сообщений: 13
Репутация: 10
По умолчанию

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

Обратите внимание на такие вещи:
  • В настройках тестового проекта нужно добавить в поле "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 в 20:42.
8Observer8 вне форума   Ответить с цитированием
Старый 30.12.2017, 11:16   #14
8Observer8
Профессионал
 
Регистрация: 02.01.2011
Сообщений: 3,260
Репутация: 915
По умолчанию

Чтобы наглядно продемонстрировать работу с 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, 17:15   #15
покайфуежи
Пользователь
 
Регистрация: 27.12.2017
Сообщений: 13
Репутация: 10
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


15:02.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru