Расширение GoLang через код Visual Studio: импорт не работает. Сборка и тестирование нормально из обычной командной строки - PullRequest
0 голосов
/ 16 апреля 2019

Я тестирую этот очень простой код Go на MacOS, используя VS Code. Проект состоит из следующих примеров пакетов / файлов:

  1. azure.com / MYPROJ / CMD / сервис / главная / main.go
  2. azure.com / myproj / cmd / service / service.go
  3. azure.com / MYPROJ / CMD / сервис / тесты / test.go
  4. azure.com / MYPROJ / внутренний / общее / common.go

В командной строке терминала все собирается и все тесты проходят: иди строить. // (работает в каждой папке) иди тест. // (тесты работают и проходят)

Однако из кода VS у меня есть 2 проблемы: 1. Импорт из пакета в пакет не работает вообще. Например:

package test

import (
    service "azure.com/myproj/cmd/service"    // VS complains on this line when running the test.
)
  1. Команда, которую выполняет код VS, - это не просто "пройти тестирование". Он передает дополнительные параметры, которые включают в себя то, что кажется кэшированным путем, который я пытался удалить из файловой системы, но это не дало эффекта. Вот что содержит вкладка «Вывод» VS.code:

Вкладка «Go Tests»:

unknown import path "azure.com/myproj/cmd/service": 
cannot find module providing package 
azure.com/myproj/cmd/service

Перейти на вкладку:

/Users/computername/go/src/azure.com/projname/cmd/service/tests 
>Finished running tool: /usr/local/bin/go test -c -o 
/var/folders/q5/hm9v_6x53lj0gj02yxqtkmd40000gn/T/vscode-goKGOMES/go- code-check azure.com/myproj/cmd/service/tests
can't load package: package 

azure.com/myproj/cmd/service: unknown import path 
"azure.com/myproj/cmd/service": cannot find module 
providing package azure.com/myproj/cmd/service

Я не понимаю, что код VS делает выше с hm9v_6x53lj0gj02yxqtkmd40000gn и как я могу это изменить. Похоже на кеш.

Итак, подведем итог: при тестировании с использованием VS Code я не понимаю, почему он использует команду для запуска тестов (см. Выше) и почему он не может найти импорт, который регулярно выполняется "go build". и команды "go test." не имеют проблем с терминалом.

Еще раз: из командной строки терминала все строится и все тесты проходят.

Кажется, явно проблема, связанная с кодом VS.

1 Ответ

0 голосов
/ 17 апреля 2019

Я нашел ответ на мою проблему. VS не понравилась структура пути к файлу для проекта. Вот изменения, которые я сделал:

  1. Перемещено main.go с azure.com/myproj/cmd/service/main/main.go на уровень azure.com/myproj/cmd/service/main.go

  2. Перемещена реализация службы (service.go) во внутреннюю папку: azure.com/myproj/internal/service/service.go

  3. Переместил тесты во внутреннюю папку: azure.com/myproj/internal/service/test/service_test.go

Как код VS может запускать тесты, не жалуясь на то, что импорт не найден.

Так что теперь у меня есть только main.go в моей папке / cmd / service. Все живет во внутреннем, включая тесты. Я подозреваю, что скрытие main.go в подпапку - вот что сбивает с толку VS Code.

...