作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这将是一个 self-answered, FAQ-style 的问题。请参阅下面的答案。
使用 Visual Studio 2017/2019,设置新的 Google Test project 并开始编写测试非常容易(只要您不介意使用旧版本的 GoogleTest 版本)。
但是如何使用 GoogleMock 呢?你会认为自从谷歌前一段时间合并了 gtest/gmock 后,这会起作用。只是 #include "gmock/gmock.h"
并 mock 。但是不,模板自动添加的GoogleTest NuGet package根本不包含gmock
文件夹。
尝试添加第二个 GoogleMock NuGet 包会导致多个问题,例如 gtest/gmock 版本不匹配、包含路径重叠等。
用 one from Google 替换 Microsoft GoogleTest NuGet 包会导致链接错误:
MSVCRTD.lib(exe_main.obj) : error LNK2019: unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
那么目前在 Visual Studio 中设置 GoogleTest/GoogleMock 的推荐(也是最不痛苦的)方式是什么?应该能够通过测试资源管理器发现、运行和调试测试。
最佳答案
我找到了两种设置方法:将整个 GoogleTest 框架直接编译到每个测试项目中,或者创建一个库项目来保存它。使用库将缩短构建时间,但您需要确保库和测试项目上的编译/链接选项相同。
选项1:在测试项目中直接编译GoogleTest
gtest_main.cc
添加到项目中。它应该在 ..\packages\gmock.1.10.0\lib\native\src\gtest\src\
.cc
文件的
Precompiled Headers 的使用(重要:也请注意空字段)。
.h
/.cpp
文件(pch.h
,pch.cpp
,framework.h
,<ProjectName>.cpp
等)gtest_main.cc
添加到项目中。它应该在 ..\packages\gmock.1.10.0\lib\native\src\gtest\src\
gtest_main.cc
的预编译头(见上面的相关图片)。 ..\packages\gmock.1.10.0\lib\native\include\
添加到测试项目的 包含目录 0x291919213141231921314123141231231412312312313131313131313131之间的目录13141213141314131413141314131413141之间的目录#include "gmock/gmock.h"
添加到 pch.h
文件中://
// pch.h
// Header for standard system include files.
//
#pragma once
#include "gtest/gtest.h"
#include "gmock/gmock.h"
打开生成的Test.cpp
文件试试看。#include "pch.h"
class MockTest {
public:
MOCK_METHOD(void, SomeMethod, ());
};
TEST(TestCaseName, TestName) {
MockTest mock;
EXPECT_CALL(mock, SomeMethod);
mock.SomeMethod();
EXPECT_EQ(1, 1);
EXPECT_TRUE(true);
}
关于c++ - 如何在 Visual Studio 中使用 GoogleMock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60486110/
我是一名优秀的程序员,十分优秀!