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
()
Ответ на: комментарий от hbee

Зачем так сложно? BASIC был встроен прямо в BIOS

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

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

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

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

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

Чем они луче?

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

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

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

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

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

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

Это необходимый минимум для любого проекта, если для тебя это «заморачиваться», то IT явно не твоё.

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

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

stackoverflow.com

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

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

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

когда есть лучшие альтернативы.

В студию!

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

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

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

Языки можно указывать в project()

rumgot ★★★★★
()

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

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 ★★★★★
()

Чисто ради интереса, на какой грейд ты претендуешь при поиске работы, если тебя просят сделать тестовое задание?

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

Моя текущая (до конца недели) должность - Chief Software Engineer. Соответственно претендую на сеньоров или даже повыше.

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

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

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

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

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

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

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

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

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

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

Чувак резко стал прокачивать гитхаб аккаунт. Очевидно, хочет, чтобы его куда-то взяли.

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

Боюсь работодатели не поймут такого афронта

vromanov ★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.