Сбой теста Cmake / Ctest при инициализации googletest

Я пытаюсь интегрировать Ctest и googletest в свой проект. Я включил GoogleTest в свой проект, как описано в https://crascit.com/2015/07/25/cmake-gtest/.

Я создал новую тестовую папку с CoreTest.cpp и CMakeLists.txt. CMakeLists содержит:

ADD_EXECUTABLE(CoreTest CoreTest.cpp)
TARGET_LINK_LIBRARIES(CoreTest corelib gtest gmock)
ADD_TEST(NAME CoreTest COMMAND CoreTest)

CoreTest.cpp содержит:

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

Это не удается:

1>------ Rebuild All started: Project: RUN_TESTS, Configuration: Debug x64 ------
1>  Test project
1>      Start 1: CoreTest
1>  1/1 Test #1: CoreTest .....................***Failed    1.52 sec
1>
1>  0% tests passed, 1 tests failed out of 1

Однако, если я прокомментирую строку InitGoogleTest, то тест пройден успешно.

Любая идея о том, что может быть проблема здесь?

Большое спасибо !

Спасибо аксалис! Я попытался запустить из командной строки и понял, что googletest dlls не были на моем пути, что было проблемой.

Я добавил несколько тестов, но вижу только вывод ctest в MSVC:

1>------ Rebuild All started: Project: RUN_TESTS, Configuration: Debug x64 ------
1>  Test project
1>      Start 1: CoreTest
1>  1/1 Test #1: CoreTest .....................   Passed    0.03 sec
1>
1>  100% tests passed, 0 tests failed out of 1

Есть ли способ увидеть вывод gtesttest как то, что я получаю из консоли?

>CoreTest.exe
[==========] Running 2 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 2 tests from MathTest
[ RUN      ] MathTest.TwoPlusTwoEqualsFour
[       OK ] MathTest.TwoPlusTwoEqualsFour (0 ms)
[ RUN      ] MathTest.TwoPlusFourEqualsSix
[       OK ] MathTest.TwoPlusFourEqualsSix (0 ms)
[----------] 2 tests from MathTest (1 ms total)

[----------] Global test environment tear-down
[==========] 2 tests from 1 test case ran. (4 ms total)
[  PASSED  ] 2 tests.

1

Решение

GoogleTest Модуль предоставляет две функции, которые можно использовать для отображения результатов каждого отдельного теста, определенного в исполняемом файле теста. gtest_add_tests() это традиционный метод, который сканирует ваши исходные файлы во время настройки, в то время как gtest_discover_tests() (доступно из CMake 3.10) задерживает разработку набора тестов до тех пор, пока CTest не будет запущен, и не станет более надежным (например, у него нет проблем с такими вещами, как тесты с параметризацией типа или значения).

Если используется CMake 3.8 или более ранняя версия, gtest_add_tests() функция обеспечивается FindGTest скорее, чем GoogleTest, Если вам нужна совместимость со старыми версиями CMake, используйте FindGTest потому что это тянет в GoogleTest модуль в любом случае. Если вам может потребоваться CMake 3.9 или более поздняя версия, используйте GoogleTest напрямую, потому что вы на самом деле не хотите пытаться найти gtest, поскольку вы включаете его непосредственно в свою сборку. Начиная с версии 3.9, ваш тест можно определить так:

include(GoogleTest)
gtest_discover_tests(CoreTest)
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]