繁体   English   中英

使用 go test - 是否可以在没有包的相对路径的情况下为单个包运行测试?

[英]Using go test - Is it possible to run tests for a single package WITHOUT the relative path to the package?

使用go test - 有没有办法在不提供相对路径的情况下对当前项目中的包运行测试?

例如,无论我当前的工作目录如何,我都可以运行go test fmt并且go将四处寻找fmt包并开始运行其测试。 这是在包列表模式下go test

但是,我不知道如何为当前项目中的包运行go test

例如- 鉴于此文件夹结构:

mySpecialProject
|--foo
|--bar
   |--bizz
   |--buzz

我已经知道我可以运行go test ./bar/bizz来运行bizz包中的测试; 我知道使用go test -run来运行特定命名的测试; 我也知道go test ./...来运行当前目录中所有包的所有测试。 这不是我在这里要求的。 我希望在不提供相对路径的情况下从项目的根目录为单个包运行测试。

阅读关于包列表模式的go test的文档,它“感觉”应该可以运行go test bizz或类似的东西在 bizz 中运行测试而不提供相对路径。

但是,当我运行该命令时,它只是说package bizz is not in GOROOT (/usr/local/Cellar/go/1.17.1/libexec/src/bizz)

有任何想法吗? 我已经find . -type d -name "bizz" | xargs go test了一个解决方法( find . -type d -name "bizz" | xargs go test )但我更愿意使用 go test 中内置的东西。

我相当肯定这是不可能的。 go test调用PackagesAndErrors函数来处理参数。

单步执行代码,我看不到您想要在本地工作以go test任何方式。 您正在使用的外壳技巧似乎是做您想做的事情的最佳方式。

由于可能有另一种解决您的问题的方法,您能描述一下您为什么想要这种特定行为吗?

您应该能够执行go test ./**/bizz 这是一个名为 globstar 的 shell 功能,因此根据您的 shell,这可能对您有用。 您可能需要先使用set -o globstarshopt -o globstar

编辑: go test ./.../bizz也可以工作,在这种情况下它是一个 go 功能。 唯一的区别是此命令不起作用 bizz 是当前工作目录的直接子目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM