首页 >后端开发 >Golang >如何在父目录中测试多个Go模块?

如何在父目录中测试多个Go模块?

Barbara Streisand
Barbara Streisand原创
2024-10-30 03:19:031078浏览

How to Test Multiple Go Modules in a Parent Directory?

在父目录中测试多个模块

在父目录中使用多个 Go 模块时,跨运行测试可能会很困难他们所有人。考虑如下所示的目录结构:

/root
    /one
        go.mod
        go.sum
        main.go
        main_test.go
    /two
        go.mod
        go.sum
        main.go
        main_test.go

问题:

尝试使用 go test 对父目录下的所有模块运行测试./.. . 导致错误:

go: warning: "./..." matched no packages
no packages to test

解决方案:

go test 命令设计用于以当前目录或其父目录为根的单个模块。它不支持测试嵌套模块。

要解决此问题,您需要使用 shell 技巧。一种方法是结合使用 find 和 xargs 命令,如 Cerise Limón 的评论所建议。项目通常会创建一个 Makefile 或 test.sh 脚本来自动化此过程。

对于具有大量模块的大型项目,更系统的方法是维护所有模块的列表(如 Google 的 go-cloud 项目) 。然后,该项目使用脚本循环遍历模块列表并执行任务,例如为每个目录运行测试。

示例:

以下 test.sh 脚本演示了这一点方法:

<code class="sh">#!/bin/bash

for module in $(cat allmodules); do
  cd $module
  go test
  cd ..
done</code>

注意:

您可能不需要单独的文件来列出模块,但 go-cloud 项目的实现提供了一个示例,说明如何更大项目管理多模块测试。

以上是如何在父目录中测试多个Go模块?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn