【问题标题】:Can I use GTest to test a single, simple function [closed]我可以使用 GTest 测试一个简单的函数吗[关闭]
【发布时间】:2013-04-24 19:30:23
【问题描述】:

我正在尝试熟悉 gtest,因此我想测试一个这样的函数:

int fun(int x=6){
return x;
}

我正在编写这样的代码:

#include "gtest/gtest.h"

#include "iostream"

int fun(int x=6){
return x;
}

TEST(FunTest, defaultTest) {
   EXPECT_EQ(6, fun());
}

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

但是我得到了大约一百万个错误。你能帮我解决这个问题吗?

【问题讨论】:

  • 除非我们知道百万错误是什么,否则我们无能为力。
  • 这段代码在我的机器上运行良好。唯一的问题是它应该是<iostream>。这可能是一个链接问题。
  • 不,根本不是,一个链接问题(我只是忘了复制粘贴 )。我想,问题是我试图通过 Geany 编译我的代码,不是吗?
  • -1 表示“我收到大约一百万个错误”。请尝试发布实际上可以回答的问题!

标签: c++ unit-testing googletest


【解决方案1】:

至少,

#include "iostream"

应该是

#include <iostream>

当您运行 Google 测试时,您需要确保 gtest 库已正确链接。 引用自Google test documentation

设置新的测试项目

要使用 Google Test 编写测试程序,您需要将 Google Test 编译成一个库并将您的测试与它链接起来。我们为一些流行的构建系统提供构建文件:msvc/ 用于 Visual Studio,xcode/ 用于 Mac Xcode,make/ 用于 GNU make,codegear/ 用于 Borland C++ Builder,以及 autotools 脚本(已弃用)和 CMakeLists.txt 用于 CMake(推荐) 在 Google 测试根目录中。如果您的构建系统不在此列表中,您可以查看 make/Makefile 以了解如何编译 Google Test(基本上您希望在头搜索中使用 GTEST_ROOT 和 GTEST_ROOT/include 编译 src/gtest-all.cc路径,其中 GTEST_ROOT 是 Google Test 根目录)。

一旦您能够编译 Google 测试库,您应该为您的测试程序创建一个项目或构建目标。确保头文件搜索路径中有 GTEST_ROOT/include,以便编译器在编译测试时可以找到“gtest/gtest.h”。将您的测试项目设置为与 Google 测试库链接(例如,在 Visual Studio 中,这是通过添加对 gtest.vcproj 的依赖项来完成的)。

【讨论】:

  • 好的,这就是问题所在,公平地说,我无法编译我的代码。谢谢!
  • @iiirxs 尝试按照他们的指示进行操作,您应该可以到达那里。
猜你喜欢
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多