我有一个包含两个项目的解决方案
其中一个是控制台应用程序,另一个是Google测试项目
我的项目有一个 .h 文件和一个 .带有主 () 的 CPP
我的gtest包含一个. CPP文件,它调用。使用#include和一个main函数来运行_ALL_TESTS()
在我的项目中需要一个main,但在gtest项目中也需要一个main,但是有两个main()不能让我成功构建gtest
有解决方法吗?抱歉,如果这是一个愚蠢的问题,我不知道如何使用gtest,因为不同的网站一直以不同的方式呈现。
我使用宏来解决这个问题。我已经定义了一个测试宏,在编译单元测试时计算为true,否则计算为false:
#ifndef TESTING
// the source main
int main() {
...
}
#endif // !TESTING
您也可以稍后将其用于源代码中的“测试”代码。我有时会做什么(不是好的设计IMO):
class Klass:
#ifdef TESTING
friend class KlassUnitTestClass; // allows access to private members in my google test unit class. Disabled when i build sources
#endif // !TESTING
gtest的标准用法是用于单元测试。通常,单元测试不检查main:)。
我建议你使用标准gest主函数(不要定义自定义主函数)。它允许您使用命令行来过滤正在运行的测试。
如果您不想使用gtest-main,IMHO,您不应该包括gtest_main库。
首先,您应该为< code>main()函数创建一个专用文件< code>main.cpp,其中不包含任何其他内容。
E、 g.您的项目结构可能如下所示:
文件1.h
文件1.cpp
主要.cpp
我不太熟悉gtest,但是通常单元测试框架有一个单独的文件用于gtest main函数,例如< code>gtest_main.cpp。测试位于一个或多个文件中,如< code>file1test.cpp等。
因此,您将编译并链接您的项目1与file1. h
、file1.cpp
和main.cpp
以获取可执行文件。
对于单元测试,您将编译和链接file1. h
、file1.cpp
、file1test.cpp
和gtest_main.cpp
用于单元测试可执行文件。
结构可以像
文件1.h
文件1.cpp
主要.cpp
file1test.cpp
gtest_main.cpp
编辑有关链接的其他信息:
在项目 1 测试中,您将包含文件 1.h
,#include “../项目 1/文件 1.h“
。
要正确链接,请右键单击项目1测试
项目
--
正如@Alan伯特尔斯所指出的,如果你有以下结构,它会更清晰:
问题内容: 这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 7年前关闭。 使用on 编译时,出现错误 为什么编译器将as视为而不是整数?我们什么时候使用? 编辑 :好的,我有点理解答案,但是您可以从“ arch / arm / include / asm / p
使用定时设定机能 设定RSS频道的定时巡逻时刻。能于设定的时刻,自动与网络联机,并下载已登录之频道的内容(项目)。 设定时刻 1. 选择频道后按下按钮,再选择选项选单的[定时设定]。 2. 设定要启动的时刻。 结束设定后,按下方向按钮,前往下一个画面。 3. 选择频道。 选择定时设定启动时要巡逻的频道。亦可进入选项选单选择[全选]。 结束设定后,按下方向按钮,前往下一个画面。 4. 保存设定。 按
我正在尝试将套接字绑定到以下端口: 但它给出: 为什么会出现这个错误呢?
问题内容: 我正在尝试将套接字绑定到以下端口: 但是它给出: 为什么会发生此错误? 问题答案: 该错误通常表示您尝试打开的端口已被另一个应用程序使用。尝试使用netstat查看哪些端口已打开,然后使用可用端口。 还检查您是否绑定到正确的IP地址(我假设它是本地主机)
我正在使用Dropwizard JDBI框架开发一个Web服务。 现在,我想使用“用户指定的参数”,而不是在yaml文件中具有数据库配置,我的意思是,数据库配置将通过endpointURL提供。 通过dropwizard jdbi可以定制信用吗 如果是,在引用此内容时,我应该考虑在代码中进行哪些更改?- http://dropwizard.readthedocs.org/en/latest/man
问题内容: 我有一个xsd文件(yahoo.xsd),我在其中导入了另一个xsd文件,如下所示: stock.xsd看起来像这样: 当我使用xjc进行编译时,出现以下错误消息: [错误]属性“符号”已经定义。使用 解决此冲突。 我基本上在SO上找到了解决此问题的方法(JAXB编译问题-[ERROR]属性“Any”已经定义),但是我无法使其正常工作。我猜我的XPath是错误的。 这是我正在使用的绑定