Настройка Gmock для QT (Windows) - PullRequest
2 голосов
/ 11 июля 2019

Я пытаюсь юнит-тестирование с использованием QT Creator. Я попытался сделать это с Linux, и он работает очень хорошо, но когда я начинаю делать это в Windows. Я обнаружил, что настройки сильно отличаются от того, что я сделал с Linux.

Прямо сейчас в моем Windows QT Creator я уже настроил gtest для своего проекта. Все работает нормально, пока я не начал настраивать googlemock. Может кто-нибудь сказать мне, как настроить googlemock в QT Creator? (окна)

Я добавил несколько файлов gmock в исходники в моем файле .pro точно так же, как я делал с файлами gtest. Кроме того, я уже добавил некоторые библиотеки, такие как libgmock.a и libgmock_main.a.

Вот изображение результатов выпуска Qt

INCLUDEPATH += "gtest/include/"
INCLUDEPATH += "gtest/"
INCLUDEPATH += "../../"
INCLUDEPATH += "gmock/include/gmock/"
INCLUDEPATH += "gmock/include/"
INCLUDEPATH += "gmock/"
INCLUDEPATH += "../../"
FORMS += \
    ../calculator.ui
HEADERS += \
    ../calculator.h \
    ../button.h
SOURCES += \
    ../calculator.cpp \
    ../button.cpp \
    main.cpp \
    gtest/src/gtest-typed-test.cc \
    gtest/src/gtest-test-part.cc \
    gtest/src/gtest-printers.cc \
    gtest/src/gtest-port.cc \
    gtest/src/gtest-filepath.cc \
    gtest/src/gtest-death-test.cc \
    gtest/src/gtest-all.cc \
    gtest/src/gtest.cc \
    gmock/src/gmock-spec-builders.cc \
    gmock/src/gmock-matchers.cc \
    gmock/src/gmock-cardinalities.cc \
    gmock/src/gmock-all.cc \
    gmock/src/gmock.cc \
    gmock/src/gmock-internal-utils.cc
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../Gmock_lib/ -lgmock_main
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../Gmock_lib/ -lgmock_maind
else:unix: LIBS += -L$$PWD/../../../Gmock_lib/ -lgmock_main
INCLUDEPATH += $$PWD/../../../Gmock_lib
DEPENDPATH += $$PWD/../../../Gmock_lib
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../Gmock_lib/ -lgmock
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../Gmock_lib/ -lgmockd
else:unix: LIBS += -L$$PWD/../../../Gmock_lib/ -lgmock
INCLUDEPATH += $$PWD/../../../Gmock_lib
DEPENDPATH += $$PWD/../../../Gmock_lib

main.cpp

#include <gtest/gtest.h>
#include <QApplication>
#include "Calculator/calculator.h"
#include "Calculator/button.h"
#include "Calculator/calculator.h"
#include <gmock/gmock.h>



TEST (sumInMemory, clearMemoryF) {
    calculator cal;
    double x = cal.sumInMemory;
       EXPECT_EQ( x , 0.0);
}

TEST (functionTest, Subtest1) {
    calculator cal;
   int x = cal.equalClicked();

   EXPECT_NE( x , -1);
}

TEST (functionTest, Subtest2) {
    calculator cal;
   double x = cal.factorSoFar;

   EXPECT_EQ( x , 0.0);
}


int main (int argc, char *argv[])
{
    QApplication a(argc, argv);
    ::testing::InitGoogleTest(&argc, argv);
            return RUN_ALL_TESTS();
}

Ответы [ 2 ]

1 голос
/ 15 июля 2019

Мой новый .pro-файл

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += console c++14

INCLUDEPATH += "gmock/include/"
INCLUDEPATH += "gmock/"
INCLUDEPATH += "gtest/include/"
INCLUDEPATH += "gtest/src/"
INCLUDEPATH += "gtest/"
INCLUDEPATH += "../../"

FORMS += \
    ../calculator.ui

HEADERS += \
    ../calculator.h \
    ../button.h \


SOURCES += \
    ../calculator.cpp \
    ../button.cpp \
    main.cpp \
    gtest/src/gtest.cc \
    gtest/src/gtest-all.cc \
    gtest/src/gtest-death-test.cc \
    gtest/src/gtest-filepath.cc \
    gtest/src/gtest-port.cc \
    gtest/src/gtest-printers.cc \
    gtest/src/gtest-test-part.cc \
    gtest/src/gtest-typed-test.cc

и элементы в моем файле src:

gmock-spec-builders.cc
gmock-matchers.cc
gmock-internal-utils.cc
gmock-cardinalities.cc
gmock-all.cc
gmock-main.cc
gmock.cc

Примечание: я использую только src и включаю для моего gtest и gmock для моего тестафайл.Я надеюсь, что это поможет другим

1 голос
/ 15 июля 2019

У меня возникла такая же проблема, я предлагаю вам скачать другую версию gmock.В моем случае я использую gmock 1.7.0.Некоторые старые версии имеют некоторые проблемы / проблемы.Просто следуйте тому, что говорит вам компилятор.

Исправьте ошибку один шаг за раз

...