cmake <-> make 和单元测试:创建除非明确命名否则不会编译的目标

发布于 2024-11-11 13:52:27 字数 538 浏览 3 评论 0 原文

我想在模块中使用 gtest 构建我的单元测试。每个模块通常是多个可测试单元的集合。在开发模块时,我一次创建一个单元测试,完成后我将它们连接到整个模块的一个单元测试中。

因此,为了便于说明,每个测试如下所示。

// file test1.cc
TEST1()
{
}
TESTn
{
)
#ifdef ISOLATED_TEST_COMPILE
int main()
{
   /* google test boiler plate */
}
#endif

连接测试的文件看起来像这样

#include "test1.cc"
#include "testn.cc"

int main()
{
   /* google test boiler plate */
}

所以我不希望能够让生成的 make 构建仅在命名时构建单个测试,并且不将单个测试包含在“all”目标中。整个模块统一单元测试构建应该位于 all 目标中。

我不希望 make all 重复编译单个测试。

I want to structure my unit tests, using gtest, in modules. each module is often a collection of multiple testible units. whilst developing a module i create a unit test at a time, and once finished I concatinate them into one unittest for the entire module.

So for some illustration, each test looks like this.

// file test1.cc
TEST1()
{
}
TESTn
{
)
#ifdef ISOLATED_TEST_COMPILE
int main()
{
   /* google test boiler plate */
}
#endif

And a file that concatinates the test looks like this

#include "test1.cc"
#include "testn.cc"

int main()
{
   /* google test boiler plate */
}

So I wan't to be able to get the generated make build to build individual tests only when named, and to not include individual tests in the "all" target. The entire module unity unit test build should be in the all target.

I don't want make all to redundtly compile single tests.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱情眠于流年 2024-11-18 13:52:27

如果单元测试不在生产中,那么快速而肮脏的方法就是像上面那样使用#ifdef。

然后你只需像这样包装 ifdef 的定义即可。

#ifdef ALL
  ...
#else
  #define UNIT1
  ....
#end if

If unit tests aren't in production, the quick and dirty would be to use #ifdef the same way you did above.

Then you just simply wrap the defines for the ifdefs like so.

#ifdef ALL
  ...
#else
  #define UNIT1
  ....
#end if
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文