LINUX.ORG.RU

С++ - шаблон проекта для тестовых заданий и простых экспериментов

 ,


0

4

Может кому пригодится. Сейчас занимаюсь поиском работы и приходится делать тестовые. Для упрщения жизни сделал шаблон проcтого проекта С++ для написания тестов и теcтовых заданий.

Он состит из трех частей:

  1. библиотека где должен распологаться основной код
  2. тесты для этого кода с использованием Google Test
  3. основное приложение.

Проект может быть использован для Visual Studio и CLion. Он собирается с использованием компилятора VS и gcc на WSL и других. Для установки Google Test используется vcpkg. Также в проект включены поддержка Github Actions. После каждого комита проект автоматически компилируется и выполняются тесты на GitHub. Результат прогона тестов публикуется.

Вы можете его просто склонировать и использовать для себя

https://github.com/vvromanov/vs_cmake_template

★★★
Ответ на: комментарий от vromanov

Какой смысл этих тестов на гитхабе? Я понимаю, если бы проверялась сборка под разные платформы или для пуллреквеста, но для такого проекта – зачем?

anonymous
()

CMake умеет подтягивать код из интернета, зачем лишняя сущность в виде vcpkg?

anonymous
()
Ответ на: комментарий от anonymous

Можно сделать сборку на разных платформах, несложно добавить отчеты по покрытию.

vromanov ★★★
() автор топика
Ответ на: комментарий от dataman

Чем они луче? Например, поддерживаются ли они также хорошо разными IDE, Jenkins итд? Есть ли о них такое-же количество материалов на SO и количество разработчиков, которое умеет ими пользоватся.

vromanov ★★★
() автор топика
Ответ на: комментарий от vromanov

Чем они луче?

Некоторые – минимализмом, некоторые – скоростью компиляции. Смотря, что важнее.

поддерживаются ли они также хорошо разными IDE

А gtest поддерживается? Буду знать. :)

Есть ли о них такое-же количество материалов на SO и количество разработчиков, которое умеет ими пользоватся.

Catch и doctest очень популярны.

dataman ★★★★★
()
Ответ на: комментарий от dataman

Да, gtest поддерживается и Visual Studio и CLion. Компилится вполне быстро

stackoverflow.com

  • doctest - 2,641 results
  • google test - 107,092 results

catch - это пик тупости в названии, потому что будет гуглиться совсем другое

vromanov ★★★
() автор топика
Ответ на: комментарий от anonymous

Я даже если пишу тестовое задание где тесты не требуются, предпочитаю покрыть его тестами.

vromanov ★★★
() автор топика

Почему используются общие команды типа:

add_link_options()
add_compile_options()
add_definitions()

Вместо соответствующих команд для целей (target_…) ?

rumgot ★★★★★
()
Ответ на: комментарий от rumgot

Там вообще можно было использовать что-то вроде

add_compile_options(
    $<$<CXX_COMPILER_ID:MSVC>:/W3>
    $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wall>
    $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wextra>)
anonymous
()
Ответ на: комментарий от rumgot

И вообще лучше использовать meson, чтобы не травмировать нежную психику @EXL.

anonymous
()
Ответ на: комментарий от dataman

Некоторые – минимализмом, некоторые – скоростью компиляции. Смотря, что важнее.

Важнее обработка аномальных событий - обращение к недоступной памяти, выполнение невалидной операции и т.п.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

И чем конкретно каждый из найденного вхождение лучше gt?

Хотя бы тем, что не от Google.
Вот решат они завтра использовать libabsl в gtest, как в RE2, тогда и вспомните меня добрым словом. :)

dataman ★★★★★
()

CXX_STANDARD не вижу смысла указывать явно, т.к.:

This property is initialized by the value of the CMAKE_CXX_STANDARD variable if it is set when a target is created.

rumgot ★★★★★
()
Ответ на: комментарий от vromanov

Ну если это будет в тестовом, то его все таки смотрит потенциальный работодатель и может себе по таким мелочам начать впечатление составлять, а может и нет и у меня параноя.

rumgot ★★★★★
()
Ответ на: комментарий от vromanov

Разве Chief Software Engineer это не over-сеньорная позиция?

Да и что-то не припомню по своему опыту, чтобы сеньоров гоняли по тестовым заданиям. Неужели конъюнктура рынка деграднула?

water_closed
()
Ответ на: комментарий от rumgot

Часто в тестовом сами тесты не нужны, нужно отдать только реализацию класса.

vromanov ★★★
() автор топика
Ответ на: комментарий от vromanov

Читал и даделал их тест на хитрую мапу. Я не занудствую, просто из 20 таких позиций thinkcell была в меньшинстве по таким запросам. Остальные хотели вести более высокоуровневые беседы с сеньором.

water_closed
()

Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария