우선, Go extension 설치가 필요하다.
extension을 설치하면 테스트코드 함수위에 run test
/debug test
옵션이 생긴다.
debug test
를 클릭하면 쉽게 디버깅을 시작할 수 있다.
패키지는 main.go
파일에서 f5
키를 누르면 디버깅이 시작된다.
yorkie 같은 경우에는 cobra
프레임워크를 사용해서 go cli 를 지원하고 있는데,
그냥 디버깅을 실행하면 bin/yorkie
이 실행되고 아래와 같이 프로그램이 종료된다.
yorkie server를 실행해서 디버깅을 하고 싶다면, bin/yorkie server
처럼 서버를 실행해야 한다.
즉, server
argument 를 전달해줘야 하는데, config 파일에 작성하면 된다.
run and debug
에 보면 launch.json
파일을 생성할 수 있는데, Go: launch package
를 선택한다.
program 에 실행할 폴더를 cmd/yorkie
로 적어주고,
"args": ["server"]
를 추가한다.
(참고: https://github.com/microsoft/vscode-go/issues/3166)
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "cmd/yorkie",
"args": ["server"]
}
]
}
이렇게 파일 작성하고 f5
키를 누르거나 ▶️ 버튼을 클릭하면 디버깅이 시작되고, yorkie 서버도 잘 실행된다.
추가로 yorkie 서버를 mongoDB와 연결하여 실행 하고 싶다면 args를 "args": ["server", "--mongo-connection-uri", "mongodb://localhost:27017"]
로 입력하면 된다.
동진님이 알려주신 integration 테스트 디버깅 방법
테스트 코드 디버깅 시에 익스텐션 설치 후에도 integration test 는 테스트코드 함수 위에 run test/debug test 옵션이 생기지 않는다.
vscode settings 에서 go tools env 검색 후 settings.json을 열고 그림과 같이 "GOFLAGS": "-tags=integration"
를 "go.toolsEnvVars"
에 추가해주면 run test/debug test 옵션이 integration test에도 생긴다.
(참고: https://hackandsla.sh/posts/2020-07-12-golang-integration-testing/)