#c #visual-studio-code #googletest
#c #visual-studio-code #googletest
Вопрос:
Хорошо, вопрос n00b. У меня есть файл cpp. Я могу собрать и запустить его в терминале. Я могу собрать и запустить его, используя clang в VSCode.
Затем я добавляю к нему gtest. Я могу скомпилировать в терминале, g -std=c 0x $FILENAME -lgtest -lgtest_main -pthread
а затем запустить, и тесты работают.
Я устанавливаю расширение C TestMate в VSCode. Все, что я вижу в Интернете, подразумевает, что это должно просто работать. Но мой проводник тестов пуст, и я не вижу никаких индикаторов тестирования в окне кода.
Я, очевидно, пропустил что-то чрезвычайно простое. Пожалуйста, помогите!
Ответ №1:
Исполняемые файлы должны быть размещены внутри папки out
или build
вашей рабочей области. Или можно изменить testMate.cpp.test.executables
конфигурацию.
Ответ №2:
Я бы сказал, никогда не предполагайте, что что-то будет «просто работать».
Вам все равно придется прочитать руководство и выяснить, каковы имена свойств конфигурации. Я не буду приводить точные примеры, потому что, хотя я использовал это расширение только короткое время, его имя и, следовательно, полный путь к свойствам уже изменились, поэтому любой пример может довольно быстро устареть.
Общая идея такова: это расширение отслеживает некоторые файлы / папки, при их изменении предполагается, что это исполняемые файлы, созданные с использованием либо gtest
или catch2
. Расширение пытается запустить их со стандартными (для этих фреймворков) флагами, чтобы получить список наборов тестов и тестовых примеров. Если это удастся, он проанализирует выходные данные и создаст красивый список на боковой панели. Маркеры в коде также зависят от точно такого же проанализированного вывода, поэтому, если у вас есть один, у вас есть и другой.
Из вышесказанного вам нужно 3 вещи, чтобы заставить это работать:
- Укажите правильный путь (или шаблон глобуса) для поиска всех тестовых исполняемых файлов (игнорируя все не-тестовые исполняемые файлы) в конфигурации расширения. Существуют разные способы сделать это, в зависимости от сложности вашей настройки, хотя все они есть в документации.
- Не изменяйте выходные данные тестового исполняемого файла. Например, если вам случится напечатать что-то в stdout / stderr до
gtest
того, как реализация проанализирует и обработает свои стандартные флаги, extension не сможет проанализировать вывод./your_test_binary --gtest-list_tests
. - Если ваш тестовый исполняемый файл нуждается в дополнительной настройке для корректной работы (env vars, cwd), убедитесь, что вы используете «расширенную» конфигурацию для расширения и соответствующим образом настраиваете эти свойства.
Для устранения неполадок # 2 и # 3 вы можете включить ведение журнала отладки для расширения (опять же, в json конфигурации VSCode), это приведет к созданию дополнительной вкладки / категории «Вывод», где вы можете увидеть, какие файлы были рассмотрены, какие были запущены, каков был результат, и что заставило игнорировать именно этот файл.
Ответ №3:
Какое-то время это меня смущало, я сделал так, как Mate059 ответил выше, и это не сработало.
Позже я узнал, что причина, по которой это не сработало, заключалась в том, что я использовал терминал Linux внутри Windows (включен в разделе функций), и я ранее установил компилятор G с помощью терминала Linux, поэтому компилятор превращал мой код в .out
файл, по какой-то причине TestMate не мог прочитать.out файлы.
Как только я скомпилировал исходный файл C с помощью терминала powershell, он создал .exe
файл, путь к которому я затем изменил в setting.json, как сказал Mate059, и он появился.
TL; DR
Mate059 дал отличный ответ, зайдите settings.json
в свою .vscode
папку и измените "testMate.cpp.test.executables": "filename.exe"
. Для меня это также работало с использованием подстановочного *
знака вместо filename.exe
, но я не предлагаю этого делать, поскольку это может что-то испортить с .exe из основного файла cpp, а что нет.