Вы должны иметь возможность отделить объявления класса gtest от определений обычным способом, используя файлы .hpp и .cpp.
Таким образом, вместо определения тестовых функций и приборов в заголовке, переместите их в исходный файл, который #include
содержит заголовок. Так, например, если у вас есть test.hpp
как:
#include "gtest/gtest.h"
class MyTest : public ::testing::Test {
protected:
void TestFunction(int i) {
ASSERT_GT(10, i);
}
};
TEST_F(MyTest, first_test) {
ASSERT_NE(1, 2);
TestFunction(9);
}
изменить test.hpp
на:
#include "gtest/gtest.h"
class MyTest : public ::testing::Test {
protected:
void TestFunction(int i);
};
и добавьте test.cpp
:
#include "test.hpp"
void MyTest::TestFunction(int i) {
ASSERT_GT(10, i);
}
TEST_F(MyTest, first_test) {
ASSERT_NE(1, 2);
TestFunction(9);
}
Если вы включаете один и тот же заголовок теста в нескольких местах, вы действительно ищете типизированные тесты или тесты с параметризацией типа? Подробнее см. http://code.google.com/p/googletest/wiki/V1_6_AdvancedGuide#Typed_Tests.