Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 210новых вакансий за сутки·93 612вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 266
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 126
  • Облачные технологии14 083
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 809
  • Продакт-менеджер1 261

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии986
  • AI вакансии950
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 537
  • Node.js2 026
  • .NET1 722
  • Kotlin1 611
  • Rust1 458
  • C#710
  • PHP682
  • C++571

DevOps и инфраструктура

  • Kubernetes7 772
  • DevOps вакансии6 054
  • Linux-инфраструктура5 493
  • Terraform / IaC4 275
  • CI/CD3 239
  • Мониторинг и Observability1 790
  • SRE568
  • Кибербезопасность458

Аналитика и данные

  • Data Scientist1 143
  • Бизнес-аналитик923
  • Аналитик данных857
  • Системный аналитик152

Другие направления

  • Проджект-менеджер620
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 276
  • Вакансии в Европе23 819
  • Вакансии в Канаде4 471
  • Работа в России3 904

По формату

  • Удалённые вакансии74 928
  • Релокация в США44 273
  • Гибридная работа12 388
  • Офисная работа7 083

По уровню

  • Senior вакансии42 625
  • Middle вакансии20 854
  • Junior вакансии6 721

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме CMakeВсе вопросы
CMakeMiddleКодинг

Как включить и настроить CTest (тестирование CMake) в проекте?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

CTest включается командой enable_testing() в CMakeLists.txt, тесты добавляются через add_test(). Запускается командой ctest из build-директории с флагами -V для вывода и --output-on-failure для CI.

Минимальная настройка

cmake_minimum_required(VERSION 3.20)
project(MyApp CXX)

enable_testing()  # ОБЯЗАТЕЛЬНО — активирует CTest

add_executable(my_app src/main.cpp)

# Добавляем тест: имя + команда
add_test(NAME SmokeTest COMMAND my_app --selftest)

Настройка CTest в CMake-проекте

CTest — компонент CMake для запуска тестов. Он не привязан к конкретному фреймворку: можно тестировать через Google Test, Catch2, Boost.Test или любой исполняемый файл, возвращающий ненулевой код при ошибке.

Интеграция с Google Test

include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/v1.14.0.zip
)
FetchContent_MakeAvailable(googletest)

add_executable(unit_tests
  tests/test_math.cpp
  tests/test_parser.cpp
)
target_link_libraries(unit_tests PRIVATE GTest::gtest_main)

# Автоматически регистрирует все TEST() как CTest-тесты
include(GoogleTest)
gtest_discover_tests(unit_tests)

Параметры add_test

# Рабочая директория
add_test(
  NAME IntegrationTest
  COMMAND integration_runner
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/testdata
)

# Передача переменных окружения
set_tests_properties(IntegrationTest PROPERTIES
  ENVIRONMENT "DB_URL=sqlite::memory:;LOG_LEVEL=debug"
  TIMEOUT 30       # секунды
  LABELS "slow"    # для фильтрации
)

Запуск тестов

# Сборка и запуск
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build

cd build
ctest                        # тихий режим
ctest -V                     # verbose: весь stdout тестов
ctest --output-on-failure    # показывать вывод только упавших (идеал для CI)
ctest -R "Unit"              # только тесты, чьё имя содержит "Unit"
ctest -L "slow"              # тесты с лейблом slow
ctest -j4                    # параллельный запуск (4 потока)
ctest --repeat until-fail:5  # повторять до первого падения

Интеграция с CI (GitHub Actions)

- name: Configure
  run: cmake -B build -DCMAKE_BUILD_TYPE=Release

- name: Build
  run: cmake --build build --parallel

- name: Test
  working-directory: build
  run: ctest --output-on-failure --parallel 4

CTestTestfile и CDash

CTest умеет отправлять результаты на CDash-сервер через ctest -D Experimental или ctest -D Continuous. Настройка хоста — в файле CTestConfig.cmake:

set(CTEST_PROJECT_NAME "MyApp")
set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
set(CTEST_DROP_METHOD "https")
set(CTEST_DROP_SITE "my-cdash.example.com")
set(CTEST_DROP_LOCATION "/submit.php?project=MyApp")

Подводные камни

  • enable_testing() должен быть вызван в корневом CMakeLists.txt, а не только в поддиректории — иначе ctest не найдёт тесты из add_subdirectory().
  • gtest_discover_tests() запускает тестовый бинарник при конфигурации (cmake-фазе), поэтому он должен быть собран до вызова — используйте gtest_add_tests() как альтернативу если это проблема.
  • Тест считается упавшим, если процесс завершился с ненулевым кодом — убедитесь, что ваш runner правильно пробрасывает exit code.
  • По умолчанию ctest не пересобирает проект — запускайте cmake --build перед ctest явно или используйте cmake --build build --target test.
  • Параллельный запуск (-j) опасен, если тесты пишут в одни и те же файлы или порты — явно задавайте RESOURCE_LOCK через set_tests_properties.
  • TIMEOUT по умолчанию не установлен — зависший тест блокирует весь CI. Всегда устанавливайте разумный таймаут.

Частые вопросы на собеседовании

  • В чём разница между target_include_directories() и include_directories()?
  • Каковы лучшие практики современного CMake (подход на основе таргетов)?
  • В чём разница между PRIVATE, PUBLIC и INTERFACE в свойствах таргетов CMake?
  • В каких проектах CMake оправдан, а где он становится источником лишней сложности?

Типичные ошибки

  • Объяснять CTest только по синтаксису, без жизненного цикла и стоимости.
  • Игнорировать ошибки, null/empty состояния, порядок инициализации или режим сборки.
  • Давать пример, который работает в демо, но ломается при изменении владельца ресурса.
  • Трактовать CMake как shell-скрипт вместо описания графа таргетов.

Что проверяет интервьюер

  • Кандидат формулирует точную модель для CTest, а не только определение.
  • Пример компилируем, безопасен по lifetime и соответствует версии технологии.
  • Названы trade-off, ограничения и диагностируемые симптомы ошибки.
  • Разделяет configure/generate/build и использует target-based подход.

Как вы знаете этот вопрос?

Проверить себя по теме CMake →

Источники

  • https://cmake.org/cmake/help/latest/manual/ctest.1.html
  • https://cmake.org/cmake/help/latest/command/add_test.html
←Предыдущий вопросВ чём разница между `cmake`, `cmake --build` и `make`?Следующий вопрос→Расскажите о случае, когда вы решали проблему с CMake: incident, optimization, migration, debugging или CI/CD.

Связанные темы

CMakebuild-systemsdependency-managementrelease-engineering