Тесты GoogleTest объявляют в отдельной библиотеке - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть много автоматически сгенерированных тестов с использованием фреймворка GoogleTest.В настоящее время каждый тест находится в файле .cpp, который включен в больший файл "Tests.cpp", который затем включается в основной файл.При попытке собрать их все мой компьютер зависает.Я предположил, что это потому, что он пытается скомпилировать их в один выходной файл.Есть ли способ написать каждое тестовое устройство "обычным" способом, имея выходной файл для каждого тестового устройства / случая и затем связав их?

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

«Нормальный» способ использования GoogleTest - это поместить тесты в отдельный проект от проекта, который вы хотите протестировать, т.е. если вы хотите протестировать свой проект Foo , вы должны поместить свои тесты в (Например, проект FooTest .

В проекте FooTest вы должны выглядеть примерно так:

#include "gtest/gtest.h"

int main(int argc, char** argv)
{
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

И отдельный тест должен выглядетьнапример:

#include "gtest/gtest.h"
#include "IntComparer.h"

namespace
{
class IntComparerTest : public ::testing::Test
{
  protected:
    IntComparerTest () { ... };
    virtual ~IntComparerTest () { ... };
};

TEST_F(IntComparerTest, biggerThanZero)
{
    EXPECT_TRUE(IntComparer::inputBiggerThanZero(1));
}

TEST_F(IntComparerTest, biggerThanZero_false)
{
    EXPECT_FALSE(IntComparer::inputBiggerThanZero(-1));
}
}

Обратите внимание, что включение gtest.h и макроса TEST_F приводит к тому, что контрольные примеры автоматически (если IntComparer.cpp скомпилирован и связан втестовый проект), зарегистрированный тестовой структурой (и, таким образом, найденный / запущенный при запуске исполняемого файла теста) - NO необходимо включить IntComparer.cpp в любом месте .

Тем не менее, вы не указали свою среду сборки и не предоставили пример кода, где вы застряли, поэтому я не могу дать вам никаких советов, кроме этого.

0 голосов
/ 28 сентября 2018

Очень неясно, что вы делаете.Обычно в C ++ вы не должны включать файл cpp.Нам нужен вывод, который вы получаете от компилятора.

Один из обычных способов - это одна единица компиляции (один файл cpp и один заголовочный файл) для одного тестового устройства и связанных тестовых случаев.

GoogleTestэто не более чем библиотека C ++ с тяжелыми и сложными макросами.Применяются обычные правила программирования на C ++.

...