You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TeamCity的bazel run执行中为Go测试添加所需输入文件

问题解答

结论

这不是TeamCity专属配置问题,直接通过Bazel配置即可实现需求。

原因说明

Bazel执行测试时采用沙箱隔离机制,只会将显式声明为依赖的文件放入测试运行时的runfiles目录,你当前未将mydir下的文件声明为测试依赖,因此不会出现在测试工作目录中。

解决方法

修改/my/certain/path/BUILD.bazel中的go_test配置,新增data字段声明需要的运行时文件:

go_test(
    name = "my_test",
    size = "enormous",
    srcs = ["my_test.go"],
    embed = [":xxx"],
    # 新增以下行,glob匹配mydir下所有文件及子目录
    data = glob(["mydir/**"]),
    deps = [
        "//pkg/util/contextutil",
        "//pkg/util/log",
        "@com_github_docker_docker//client",
        "@org_golang_x_net//context",
    ],
)

如果只需要用到mydir/input1和mydir/input2两个文件,也可以不使用glob,直接写:

data = ["mydir/input1", "mydir/input2"]

效果验证

修改配置后重新执行bazel命令,测试的runfiles目录下就会生成和源码结构一致的mydir目录,代码中直接用相对路径mydir/input1即可访问到对应文件,无需调整现有读取逻辑。

注:data字段对bazel run和bazel test两种执行方式都生效,不需要调整你当前的执行命令。

内容的提问来源于stack exchange,提问作者IsaIkari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:24:07