bazel使用gtest

步骤1 找到对应的gtest代码

从github上找到对应的commitid,比如:https://github.com/google/googletest/commit/f8d7d77c06936315286eb55f8de22cd23c188571

步骤2 在对应bazel的WORKSPACE文件中新增以下代码,将找到的commitid替换urls和strip_prefix对应的commitid

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
  name = "com_google_googletest",
  urls = ["https://github.com/google/googletest/archive/f8d7d77c06936315286eb55f8de22cd23c188571.zip"],
  strip_prefix = "googletest-f8d7d77c06936315286eb55f8de22cd23c188571",
)

步骤3 编写测试用例

#include <gtest/gtest.h>

TEST(HelloTest, SimpleTest)
{
    EXPECT_STRNE("hello", "world");
    EXPECT_EQ(2, 1 * 2);
}

步骤4 编写bazel targe规则

cc_test(
    name = "hello_test",
    size = "small",
    srcs = [
        "hello_test.cc"
    ],
    deps = ["@com_google_googletest//:gtest_main"],
)

步骤5 运行测试用例

bazel test --cxxopt=-std=c++14 --test_output=all //test:hello_test

如果不使用–cxxopt=-std=c++14,则可能会出现变异gtest错误

external/com_google_googletest/googletest/include/gtest/gtest.h: At global scope:
external/com_google_googletest/googletest/include/gtest/gtest.h:302:30: error: 'std::enable_if_t' has not been declared
  302 |   template <typename T, std::enable_if_t<std::is_convertible<T, int64_t>::value,
      |                              ^~~~~~~~~~~
external/com_google_googletest/googletest/include/gtest/gtest.h:302:41: error: expected '>' before '<' token
  302 |   template <typename T, std::enable_if_t<std::is_convertible<T, int64_t>::value,
      |                                         ^
Target //test:hello_test failed to build

可以在WORKSPACE目录创建.bazelrc文件,文件里面进行如下设置,可以不用每次执行test的时候都增加–cxxopt=-std=c++14 --test_output=all参数

test --cxxopt=-std=c++14 --test_output=all
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值