在Bazel中,bazel test是用于运行测试的命令,而直接执行代码可以使用bazel run命令或直接在控制台中运行。这两种方法的主要区别在于bazel test会自动编译依赖项和运行所有测试,而直接执行代码则只编译并执行指定的代码。
以下是一个示例:
假设我们有以下目录结构:
src/
BUILD
foo/
BUILD
foo.cc
foo_test.cc
其中foo/BUILD文件包含以下内容:
cc_library(
name = "foo",
srcs = ["foo.cc"],
hdrs = ["foo.h"],
)
cc_test(
name = "foo_test",
srcs = ["foo_test.cc"],
deps = [":foo"],
)
通过在控制台中执行以下命令,我们可以直接运行foo.cc中的代码:
$ bazel run //src/foo:foo
上述命令将编译foo.cc文件并执行生成的可执行文件。
另一方面,要使用bazel test运行所有测试,我们可以运行以下命令:
$ bazel test //src/foo:foo_test
这将编译依赖项,并运行foo_test.cc中包含的所有测试。如果测试成功通过,将会得到一个全部绿色的输出结果。