将 Gmock 设置为 QT (Windows)

Setting Up Gmock to QT (Windows)

我正在尝试使用 QT Creator 进行单元测试。我试着用 linux 来做,它工作得很好,但是当我在 Windows 开始做的时候。我发现设置与我对 linux 所做的设置有很大不同。

现在在我的 Windows QT Creator 中,我已经为我的项目设置了 gtest。在我开始设置 googlemock 之前一切正常。有人能告诉我如何在 QT Creator 中设置 googlemock 吗? (windows)

我在 .pro 文件的源代码中添加了一些 gmock 文件,就像我对 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();
}

我遇到了同样的问题,建议你下载其他版本的gmock。就我而言,我使用 gmock 1.7.0。一些旧版本有一些 problems/issues。只需按照编译器告诉您的内容即可。

一次修复一个错误

我的新 .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

注意:我只对我的 gtest 使用 src 和 include,对我的测试文件使用 gmock。 我希望这会对其他人有所帮助