2012-05-10 2 views
3

Я использую платформу проверки Google для C++. Следуя документации и примерам, я получаю отдельный исполняемый файл для каждого тестового файла «.cc», который я создаю. Есть ли способ создать единый исполняемый файл, который будет вызывать все мои модульные тесты?googletest: Как включить все мои тесты в один исполняемый файл?

Я хотел бы поместить свой проект в инструмент CI, который сообщает о состоянии теста, поэтому я хотел бы иметь один XML-входной файл вместо многих.

Мясо моего макияжа файл выглядит следующим образом:

class1_unittest.o : $(USER_TEST_DIR)/class1_unittest.cc $(USER_DIR)/class1.h $(GTEST_HEADERS) 
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_TEST_DIR)/class1_unittest.cc 

class1_unittest : class1.o day.o class1_unittest.o gtest_main.a 
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -pthread $^ -o $(PROJECT_BIN)/[email protected] 

class2_unittest.o : $(USER_TEST_DIR)/class2_unittest.cc $(USER_DIR)/class2.h $(GTEST_HEADERS) 
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_TEST_DIR)/class2_unittest.cc 

class2_unittest : class2.o day.o class2_unittest.o gtest_main.a 
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -pthread $^ -o $(PROJECT_BIN)/[email protected] 
+0

Вы определяете 'main' много раз? Просто определите его один раз и соедините все файлы '.cc'. –

+0

У меня нет основного в любом из моих тестовых файлов. Если я поместил его и назову «RUN_ALL_TESTS(),« как связать файлы cc вместе в файле make? Не похоже, что у них есть классы друг для друга. – RepDetec

ответ

2

Вам просто нужно включить все тестовые файлы в одной цели в вашем Makefile, и определить main(), либо в один из тестовых файлов или в отдельном main.cc, который также должен быть включен в цель.

В качестве docs объясните, что различные версии макроса TEST() неявно регистрируют свои тесты с помощью Google Test. Это означает, что вы можете иметь автономный main.cc, который содержит только:

#include "gtest/gtest.h" 
int main(int argc, char **argv) { 
    ::testing::InitGoogleTest(&argc, argv); 
    return RUN_ALL_TESTS(); 
} 
Смежные вопросы