Я пытаюсь интегрировать 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.
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)
Других решений пока нет …