Скорее всего, нет.
Я потратил некоторое время на рассмотрение вашего вопроса и думаю, что никогда не видел какого-либо специального правила, касающегося включения заголовков и юнит-тестов. Однако, исходя из своего опыта, я думаю, что мы можем начать со следующего:
Включите только заголовок, который вы хотите проверить модулем, и внимательно изучите его перед добавлением второго.
Что это значит? Давайте предположим, что вы хотите протестировать свой Addition.h
API, а затем создадите следующее на своем Test.cpp
#include "gtest/gtest.h"
#include "Addition.h"
TEST(AdditionTest, TwoPlusTwo) {
EXPECT_EQ(4, Add(2, 2));
}
Вы нажали compile, а затем получили это сообщение:
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
.
Короче говоря, в простейшем случае вы добавляете только заголовок, который хотите непосредственно протестировать и тщательно анализировать каждую ошибку, поскольку они могут быть вашими первыми ошибками.