Как настроить C Testmate в VS Code

#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 вещи, чтобы заставить это работать:

  1. Укажите правильный путь (или шаблон глобуса) для поиска всех тестовых исполняемых файлов (игнорируя все не-тестовые исполняемые файлы) в конфигурации расширения. Существуют разные способы сделать это, в зависимости от сложности вашей настройки, хотя все они есть в документации.
  2. Не изменяйте выходные данные тестового исполняемого файла. Например, если вам случится напечатать что-то в stdout / stderr до gtest того, как реализация проанализирует и обработает свои стандартные флаги, extension не сможет проанализировать вывод ./your_test_binary --gtest-list_tests .
  3. Если ваш тестовый исполняемый файл нуждается в дополнительной настройке для корректной работы (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, а что нет.