我正试图在vs代码上配置一个调试器,以在go中进行一些测试.我必须给它传递一些标志,但它工作不好.

主要的go

package main

import (
    "flag"
    "fmt"
)

func DoTheThing() {
    flag1Ptr := flag.Bool("flag1", false, "flag1 is a flag")
    flag.Parse()
    fmt.Println(*flag1Ptr)
    fmt.Println("Hello, world")
}

func main() {
    DoTheThing()
}

main_测试.go

package main

import "testing"

func TestDoTheThing(t *testing.T) {
    DoTheThing()
}

emits json

{
    "name": "Launch app",
    "type": "go",
    "request": "launch",
    "mode": "auto",
    "program": "${workspaceFolder}",
    "args": [
        "-flag1"
    ]
},
{
    "name": "Run Tests",
    "type": "go",
    "request": "launch",
    "mode": "test",
    "program": "${workspaceFolder}",
    "args": [
        "--", "-flag1"
    ]
}

如果我用Launch app config运行它,它会以正确的方式传递值,但使用测试它不会设置参数

使用启动应用程序配置输出

true
Hello, world

使用运行测试配置输出

false
Hello, world

推荐答案

package main

import (
    "flag"
    "fmt"
)

var flag1Ptr *bool

func init(){
    flag1Ptr = flag.Bool("flag1", false, "flag1 is a flag")
}

func DoTheThing() {
    flag.Parse()
    fmt.Println(*flag1Ptr)
    fmt.Println("Hello, world")
}

func main() {
    DoTheThing()
}

launch.json

{
    "name": "Launch app",
    "type": "go",
    "request": "launch",
    "mode": "auto",
    "program": "${workspaceFolder}",
    "args": [
        "-flag1"
    ]
},
{
    "name": "Run Tests",
    "type": "go",
    "request": "launch",
    "mode": "test",
    "program": "${workspaceFolder}",
    "args": ["-flag1"]
}

Go相关问答推荐

如何创建两个连接的io.ReadWriteClosers以用于测试目的

在Golang中,@LATEST和@UPGRADE特殊查询有什么不同?

Docker Compose Health Check未退出,错误为无法启动

如何配置vscode以在Go中显示不必要的(过度指定的)泛型?

Golang Gorm Fiber / argon2.Config 未定义

testcontainers:如何修复绑定源路径不存在

Kubo,来自 IpfsNode.Bootstrap 的无效内存地址或零指针取消引用

从给定顶点查找图形中所有闭合路径的算法

golang:解组动态 YAML 注释

为什么互斥量比 golang 中的通道慢?

如何在切片增长时自动将切片的新元素添加到函数参数

如何使用 go-playground/validator 编写 snake case 绑定标签?

Protobuf.Any - 从 json.RawMessage 解组

无法建立连接,因为目标机器主动拒绝它 Golang

使用 Golang SQL 驱动程序连接到snowflake

具有近似约束的函数值导致的实例化失败

如何在循环中旋转图像以便在 golang 中创建 GIF?

使用 bolthold 3 条件进行 boltDB 查询

如何在眼镜蛇(golang)中将标志作为参数传递?

Go模板中的浮点除法