Debugging Go tests in Visual Studio Code
Solution 1
To launch debugger for test I added one more configuration for launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Code",
"type": "go",
"request": "launch",
"mode": "debug",
"remotePath": "",
"port": 2345,
"host": "127.0.0.1",
"program": "${workspaceRoot}",
"env": {},
"args": [],
"showLog": true
},
{
"name": "Test Current File",
"type": "go",
"request": "launch",
"mode": "test",
"remotePath": "",
"port": 2345,
"host": "127.0.0.1",
"program": "${file}",
"env": {},
"args": [],
"showLog": true
}
]
}
Also this configuration does not support tags. All tags in test files have to be disabled
// +build unit
...
Solution 2
For the mode, you can select auto
which would choose either debug
or test
depending on active editor window.
All options for mode are auto
, debug
, test
, exec
, replay
, core
.
The resulting launch.json
would look like:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch file",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${file}"
}
]
}
Related videos on Youtube
Comments
-
Vitalii about 2 years
On my Windows machine, I have Visual Studio Code installed. To run tests manually, I go in console to projects folder and enter
go test main_test.go
It works perfectly.
But I have a situation in which I need to debug my test to understand what's going on.
For this I open launch.json and add a configuration
{ "name": "Tests", "type": "go", "request": "launch", "mode": "test", "remotePath": "", "port": 2346, "host": "127.0.0.1", "program": "${workspaceRoot}", "env": {}, "args": [ "main_test.go" ], "showLog": true }
After I press F5 I have
2017/03/29 13:28:11 server.go:73: Using API v1 2017/03/29 13:28:11 debugger.go:68: launching process with args: [./debug.test main_test.go main_go] not an executable file Process exiting with code: 1
Any ideas why this error occurs and what executable it's looking for?
-
Bob about 7 yearsTry to specify 'program' property in configuration with executable file '${workspaceRoot}/main_test.go'
-
Vitalii about 7 yearsThat's it, thanks!
-
-
Calvin Zhou over 4 yearsMode test is the key thing here and you saved my life! Thanks a lot as it's so difficult to find proper solution when I tried to debug unit test in vscode, what a combination!
-
learning2learn about 4 yearsDoes anyone know what the change would be to debug a "go test" case remotely?
-
Jerinaw over 2 yearsThis solution used to work for me, now it doesn't. I'm not sure what changed but I had to change
"program": "${file}"
to"program": "${relativeFileDirname}"
because VSCode was not finding the other files in the package. -
Brenno Leal over 2 yearsIn fact MODE = TEST was the answer I did no found in any other place! Thank you for share it with us.