【问题标题】:How to start docker images for my integration tests in bazel?如何在 bazel 中为我的集成测试启动 docker 图像?
【发布时间】:2019-09-21 22:27:51
【问题描述】:

我正在为我的 Go 项目寻找构建系统。在 Java 世界中,事情看起来要容易得多。你有 maven,做测试/集成测试和打包项目非常容易。

我正在尝试找到在 docker 中启动 Redis 然后运行包集成测试并最终停止 Redis 的解决方案。

我的测试规则没有问题:

go_test(
    name = "go_default_test",
    srcs = ["person_cache_integration_test.go"],
    embed = [":go_default_library"],
    deps = [
        "//internal/models:go_default_library",
        "@com_github_stretchr_testify//assert:go_default_library",
    ],
)

但是如何在此规则之前在 Docker 中启动 Redis,并在测试成功或失败后停止 Redis?

谢谢。

【问题讨论】:

  • 您的问题更多是因为您需要一种方法来在发生故障时进行清理,而不是启动起来很困难?您可以让测试启动容器作为测试二进制文件本身的一部分。
  • 我这样做是因为我找不到使用 bazel 的解决方案。

标签: integration-testing bazel


【解决方案1】:

如果您的用例真的只是测试,我推荐使用测试容器。 这样,您的测试不依赖于构建系统,并且可以在本地执行,也可以在 CI 系统中执行。

这是一个 go 实现:https://github.com/testcontainers/testcontainers-go

我不确定这是否适用于 bazel 远程构建,但对于一个典型的项目来说应该没问题。

【讨论】:

  • 是的,这是一个很好的解决方案。我开始使用github.com/ory/dockertest,但如果我可以在 Bazel 中声明规则并且不将其放入代码中,那就太好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 2018-07-29
相关资源
最近更新 更多