Добавление Google Unit Test в Makefile Managed Project - PullRequest
0 голосов
/ 08 ноября 2018

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

  • Нужно ли включать все файлы заголовков файла проекта в тестовый файл?

например, если в моем файле Addition.cpp есть файл «Calculate.h», и я хочу протестировать любую функцию Additiion.cpp. Нужно ли добавлять заголовок «Рассчитать и сложить»

1 Ответ

0 голосов
/ 10 ноября 2018

Скорее всего, нет.

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

Включите только заголовок, который вы хотите проверить модулем, и внимательно изучите его перед добавлением второго.

Что это значит? Давайте предположим, что вы хотите протестировать свой 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.

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

...