Я пытаюсь добавить несколько модульных тестов к моему существующему проекту. Я, наверное, впервые пишу модульные тесты, поэтому мои знания ограничены.
например, если в моем файле Addition.cpp есть include "Calculate.h", и я хочу протестировать любую функцию Additiion.cpp. Нужно ли мне добавлять заголовочный файл Calculate и Addition





Скорее всего, нет.
Я потратил некоторое время на обдумывание вашего вопроса и думаю, что никогда не видел каких-либо специальных правил относительно включения заголовков и модульных тестов. Однако, исходя из своего опыта, я думаю, что мы можем начать со следующего:
Включите только заголовок, который вы хотите протестировать, и внимательно его рассмотрите, прежде чем добавлять второй.
Что это значит? Что ж, давайте предположим, что вы хотите протестировать свой Addition.h API, а затем создаете следующее на своем Test.cpp
#include "gtest/gtest.h"
#include "Addition.h"
TEST(AdditionTest, TwoPlusTwo) {
EXPECT_EQ(4, Add(2, 2));
}
Вы нажали кнопку "Скомпилировать" и получили следующее сообщение:
In file included from
Test.cpp:3:
Addition.h:4:1: error: unknown type name 'result_t'
result_t Add(int a, int b)
^
1 error generated.
Поздравляю! Ваш модульный тест обнаружил ошибку! Очевидно, ваш заголовок Addition.h не автономный, поскольку он пытается использовать тип - result_t - который компилятор еще не знает. Это можно исправить, добавив файл заголовка, реализующий тип result_t, в Addition.h, нетTest.cpp.
Конечно, некоторые раз допустимо добавить новый заголовок во включаемые файлы самого теста. Представьте, что Addition.h получает аргумент result_t*, а result_t теперь является непрозрачным типом, известным только внутренней реализации в Addition.cpp. В этом случае вашему устройству может потребоваться немного больше информации о result_t, чем о Addition.h, поэтому допустимо добавить дополнительное включение в Test.cpp.
Короче говоря, в простейшем случае вы добавляете только заголовок, который хотите напрямую протестировать, и тщательно анализируете каждую ошибку, потому что они могут быть вашими первыми ошибками.