unit-testing - go test 意外将 -test.timeout 标志传递给被测程序
问题描述
我有一个小的 cli 程序,go
它-config=<config file>
使用flag.String()
.
当我将go test
其称为错误时,因为我的程序说flag provided but not defined: -test.timeout
.
go test -v -x -args -config=./config.yml
给我:
/usr/lib/go/pkg/tool/linux_amd64/link -o $WORK/b001/... .../b001/myprogram.test -test.timeout=10m0s -test.v=true -config=./config.yml
换句话说,它将测试参数传递给myprogram
,即使我希望这会被标志禁止(应该只在标志之后-args
传递参数?)。-args
这是一个错误吗?有没有办法禁止go test
将任何标志传递给测试程序,除了我特别告诉它的那些)?
编辑:相关的代码片段:
package main
import (
"context"
"encoding/json"
"flag"
// ...
)
// ...
var (
configpath = flag.String("config", "config.yml", "Config file to use, if omitted defaults to config.yml")
// ...
func init() {
var err error
flag.Parse()
_, err = configGlobal.getConfig(*configpath)
if err != nil {
panic("No config loaded")
}
// ...
}
通常在没有参数或有参数的情况下运行程序-config ./config.yml
,显然传递其他标志不会。
解决方案
推荐阅读
- flutter - 在 ListView.builder 中定义从 Firestore 检索到的文档数
- javascript - 计算字符串最大可能长度的算法
- c# - IdentityServer4 是否比 JWT 实现的示例更安全
- ios - 在 swiftui 中使用 @Binding 和类型转换
- bash - 在 bashrc 中添加对我的 PS1 命令的功能调用
- linux - 简单的 SIP 呼叫接收器和记录器
- android - 获得用户消息平台 Android 的同意
- javascript - node.js 中未处理的 Firestore 实时侦听器错误
- java - 使用 bytebuddy 从拦截方法调用 lambda 会引发 java.lang.NoClassDefFoundError:
- python - Python Pandas:从显示符合条件的值索引的数据框创建列表