cucumber - 如何将黄瓜与巴泽尔一起使用?
问题描述
我正在尝试创建一个包含cucumber-cpp的Bazel项目。我无法弄清楚它的文件会是什么样子。BUILD
由于Google 测试现在包含它自己的BUILD
文件,因此它变得非常简单。类似的东西会很好。
我的WORKSPACE
文件看起来像这样
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "googletest",
sha256 = "927827c183d01734cc5cfef85e0ff3f5a92ffe6188e0d18e909c5efebf28a0c7",
strip_prefix = "googletest-release-1.8.1",
url = "https://github.com/google/googletest/archive/release-1.8.1.zip",
)
http_archive(
name = "cucumber-cpp",
sha256 = "73fddda099e39cc51ebee99051047067f6dcd437fbde60601ac48cb82a903dac",
url = "https://github.com/cucumber/cucumber-cpp/archive/v0.5.zip",
)
我的规范BUILD
文件
cc_test(
name = "app-spec",
srcs = glob(["**/*.cpp"]),
deps = [
"//src:app-lib",
"@cucumber-cpp//:main", //do not know if this is correct
],
)
cc_test(
name = "app-spec",
srcs = glob(["**/*.cpp"]),
deps = [
"//src:app-lib",
"@cucumber-cpp//:main", //do not know if this is correct
],
)
测试BUILD
文件
cc_test(
name = "app-test",
srcs = glob(["**/*.cpp"]),
deps = [
"//src:app-lib",
"@googletest//:gtest_main",
],
)
但显然cucumber-cpp
没有构建,所以我想知道它的 Bazel BUILD 文件会是什么样子?
解决方案
我也想这样做,但找不到任何人尝试过的任何东西。最后,我编写了一个专用的 bazel 扩展,用于使用黄瓜和小黄瓜功能规范。目前这只支持(linux|osx)+cpp+cucumber
,但我可能会进一步添加对 windows 和其他语言的支持。要使用它,请将其添加到您的 WORKSPACE 文件中;
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
name = "rules_gherkin",
commit = "ef361f40f9716ad8a3c6a8a21111bb80d4cbd927", # Update this to match latest commit
remote = "https://github.com/silvergasp/rules_gherkin.git"
)
load("@rules_gherkin//:gherkin_deps.bzl","gherkin_deps")
gherkin_deps()
load("@rules_gherkin//:gherkin_workspace.bzl","gherkin_workspace")
gherkin_workspace()
一个示例 BUILD 文件如下所示;
load("//gherkin:defs.bzl", "gherkin_library", "gherkin_test")
gherkin_library(
name = "feature_specs",
srcs = glob(["**/*.feature"]),
)
gherkin_test(
name = "calc_test",
steps = ":calculator_steps",
deps = [":feature_specs"],
)
load("//gherkin:defs.bzl", "cc_gherkin_steps")
cc_gherkin_steps(
name = "calculator_steps",
srcs = [
"CalculatorSteps.cpp",
],
visibility = ["//visibility:public"],
deps = [
"//examples/Calc/src:calculator",
"@cucumber_cpp//src:cucumber_main",
"@gtest",
],
)
一个完整的例子可以在这里找到。
推荐阅读
- python - 我需要帮助来弄清楚我需要哪些代码来删除重复项
- c++ - 使用可变参数模板列表初始化数组并放置新的
- javascript - 无法使用草图 p5.js 居中并填充视口
- java - 如何从 TestRail 运行 Java 自动测试
- vba - 如何将文本框或标签链接到组合框值?我找到了一种链接到数字值而不是文本值的方法
- python-3.x - 如何更改 seaborn.catplot 中的标记大小
- javascript - 如何在单击时获取表格单元格的位置
- javascript - 如何在 Bootstrap-Vue 中检索输入类型文件(具有多个文件)中的文件路径
- python - 如何从熊猫数据框中删除并返回一行?
- android - Android:如何摆脱App中的标题栏?