我开始使用GoogleTest。它似乎需要一个主文件来运行测试:
Separate test cases across multiple files in google test
但是目前在我的演示应用程序中我已经有了一个主文件:
src/
-> MyType.h
-> main.cpp
-> Makefile
最终将成为我的"生产"应用。我不想用gtest包含,宏等混乱。
我应该在另一个文件夹中创建另一个main.cpp文件,例如:test/
,它将包含所有特定的gtest配置,所以我最终会得到:
src/
-> MyType.h
-> main.cpp
-> Makefile // Makefile for producing production code/binaries
Test/
-> MyTypeTest.h // Unittest for MyType
-> main.cpp // The "Test runner"
-> Makefile // Makefile for producing test executable
修改
基于cmake找到了这个:
http://www.kaizou.org/2014/11/gtest-cmake/
这似乎正是我正在寻找的。 p>
答案 0 :(得分:3)
最明智的方法是为您的生产代码创建一个库,然后是两个可执行文件,一个用于生产,另一个用于测试:
|-lib/
| |-Makefile
| |-mytype.h
| `-mytype.cpp
|-app/
| |-Makefile
| `-main.cpp
`-test/
|-Makefile
`-mytypetest.cpp
请注意,gtest发行版为gtest
库和gtest_main
库提供了测试可执行文件的标准主函数。因此,除非您需要自定义主要(罕见情况),否则您不需要为您的测试提供main.cpp
,只需链接到gtest_main
即可。 $(CC) mytypetest.cpp -o apptests -lapplib -lgtest_main -lgtest
。
库方法涉及稍微复杂一点的Makefile
,但它在编译时得到了回报,因为没有它意味着你需要为生产应用程序编译一次mytype.cpp
,为测试可执行文件编译一次。 / p>
答案 1 :(得分:0)
可能有很多方法可以做到这一点,但一般来说,是的,您应该为项目添加特定于测试的主要功能。这使得编译变得有点复杂,因为你必须生成两个单独的二进制文件(一个用于你的应用程序,另一个用于你的测试),但这是一个相当典型的设置。
答案 2 :(得分:0)
我只需添加一个带有main的test.cpp文件,并在我的makefile中创建一个test
目标,这样我就可以make
- 构建我的生产代码 - 或{{1} - 构建测试。在实际项目中,我以非常相似的方式使用cmake(我有时会将所有常见依赖项捆绑在make test
库中,然后将main和test链接起来。)