Как создать модульный тест googletest, используя библиотеку gtest_main с Jam? - PullRequest
2 голосов
/ 08 октября 2010

Я пытаюсь создать модульный тест googletest для проверки концепции в качестве новой среды модульного тестирования, которую мы могли бы использовать.В googletest есть два способа написания модульного теста: с основным или без основного.Если вы не определили main, вы можете создать ссылку в библиотеке gtest_main, которая включает в себя функцию main (), что экономит ваше время.В моей среде мы используем Jam для создания бинарных файлов.Я получил двоичный файл для компиляции с main () в моем коде и с использованием библиотеки libgtest, но я ищу, как собрать его в Jam без основного.

Базовый случай (с main ()функция):

Я могу построить двоичный файл с этим:

Main MyUnitTestBinary : MyClass.cpp ;
LinkLibraries MyUnitTestBinary : libgtest ;
Library libgtest : $(GTEST_DIR)/src/gtest-all.cc ;

Разбитый регистр (без функции main ()):

Я не могупостроить двоичный файл с этим.Я вижу много ошибок при попытке связать объекты:

Main sample1_unittest : sample1.cc sample1_unittest.cc ;
LinkLibraries sample1_unittest : gtest_main ;
Library gtest_main : $(GTEST_DIR)/src/gtest_main.cc ;

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

Есть какие-нибудь мысли о том, как я могу на это напасть, или поищите дополнительные подсказки по проблеме?

1 Ответ

5 голосов
/ 09 октября 2010

Я нашел ответ! Я неправильно не добавлял libgtest и gtest_main в двоичный файл. Я думал, что gtest_main также включает определения для фреймворка, и вам нужно связать одно или другое. Фактически вам всегда нужно связать libgtest, и вам нужно связать gtest_main, только если вы не хотите изменять стандартную функцию main ().

Итак ... правильный ответ - добавить:

LinkLibraries sample1_unittest : libgtest gtest_main ;
Library libgtest : $(GTEST_DIR)/src/gtest-all.cc ;
...