Executando testes de unidade com sinalizadores personalizados
No Visual Studio Code (VS Code), você pode encontrar desafios ao executar e depurar testes de unidade ao precisa fornecer sinalizadores específicos. Vamos nos aprofundar no problema e fornecer uma solução abrangente.
Visão geral do problema
Ao executar testes de unidade no VS Code, os usuários podem precisar especificar sinalizadores personalizados, como - ldflags no exemplo fornecido. No entanto, eles enfrentaram dificuldades ao integrar esses sinalizadores no executor de testes do VS Code.
Configurações de trabalho
Por meio de experimentação, descobriu-se que duas configurações separadas são necessárias para alcançar a funcionalidade de teste de execução e teste de depuração:
Executar teste:
"go.testFlags": [
"-ldflags",
"-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]
Teste de depuração:
"go.testFlags": [
"-ldflags",
"'-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'"
]
Problema subjacente
O motivo das diferentes configurações está em como o VS Code gera o comando de teste. Ao depurar, o VS Code adiciona parâmetros adicionais ao comando, o que afeta a forma como os sinalizadores são interpretados. Como tal, as aspas simples na configuração de depuração são necessárias para garantir que os sinalizadores sejam passados corretamente.
Solução possível
Um método alternativo sugerido para depuração de testes complexos é para compilar o binário de teste e iniciar uma sessão de depuração dlv. Isso permite um controle mais preciso sobre a execução do teste e a experiência de depuração.
Usando dlv para depuração
As etapas a seguir descrevem como usar dlv para depuração de testes de unidade:
Compile o binário de teste com os sinalizadores necessários, como:
go test -c -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -gcflags="all=-N -l"
Iniciar uma sessão dlv sem cabeça:
dlv exec ./foo.test --headless --listen=:2345 --log --api-version=2 -- -count=1 -- $(pwd)/some/path
No VS Code, abra o arquivo de configuração de inicialização (Debug: Abra launch.json). Crie uma configuração semelhante a esta:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Test",
"type": "go",
"request": "attach",
"mode": "remote",
"port": 2345,
"host": "127.0.0.1",
"showLog":true,
"trace":"log"
}
]
}
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3