Модульный тест (в отличие от интеграционного теста) - это тест (обычно фактически несколько тестов, которые существуют в одном классе и файле), который проверяет функциональность одного модуля (обычно класса).
Интеграционный тест, напротив, проверяет взаимодействие нескольких различных устройств. Сквозное тестирование - это особый тип интеграционного теста, который тестирует весь программный стек, от пользовательского интерфейса до всего, что находится ниже.
Существует два типа тестов: «стеклянный ящик» и «черный ящик». Тест «черного ящика» не зависит от реализации; он написан только на основе документированного поведения функции / класса и гарантирует, что любая произвольная реализация придерживается документированного поведения. Он также может включать тесты на возможные ошибки, которые могут совершать различные теоретические реализации, но выполняется без учета того, что делает фактическая реализация. Напротив, «стеклянный ящик» - это тест, который использует знания о реализации и гарантирует, что каждый путь кода в реализации был протестирован. Хороший тест состоит из комплексного тестирования черного и стеклянного ящиков.
Существует ряд различных свободно доступных библиотек, которые облегчают создание модульных тестов. Я настоятельно рекомендую использовать для тестирования googletest и gmock (оба широко используются в Google).