ПредишенСледващото

Мисля, че повечето C ++ разработчици, така или иначе се сблъскват с CMake, в същото време, че такова CTest и как тя може да се използва за автоматизиране на тестването на модела не знам всичко.
За да се покаже как можете да използвате CMake и CTest заедно, аз, като пример е създаден малко библиотека, състояща се от няколко реда код, който е в състояние да добавите и разделят Освен CMake и CTest приложения нужда UnitTest библиотека (в този пример аз взе Boost.Test, обаче, можете да вземете и GoogleTest). Тук е необходимо да се обърне внимание на това, което не е CTest рамка за тестове недвижими писане. CTest - е приложение, за да прави изследвания, и ако е необходимо, да изпратите резултатите на някой от поддържаните хранилищата.
Структурата на папките с прилагането на теста ще бъде, както следва:


./ тест
./test/main.cpp
./test/CMakeLists.txt
./ включва
./include/calc.h
./ SRC
./src/CMakeLists.txt
./src/calc.cpp
./CMakeLists.txt

Същия начин, ние създаваме един корен и един CMakeLists CMakeLists файл, за да опишат монтажа на библиотеката и тестове.

cmake_minimum_required (версия 2.6)
проект (AutoUnitTests)

SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY
$ / Bin
Път в кеша
"Single Directory за всички"
)

SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY
$ / Bin
Път в кеша
"Single Directory за всички"
)

SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
$ / Lib
Път в кеша
"Single Directory за всички"
)

find_package (Boost ЗАДЪЛЖИТЕЛНО)

add_subdirectory (SRC строителство / SRC)
add_subdirectory (тест строителство / изпитване)

Първите три SET команди не са задължителни, аз просто не ми харесва, когато в процеса на сглобяване на един куп междинни файлове, поставени в основната директория. Но присъствието на екипа в CMakeLists на корен enable_testing подаде върху оборота сигурен дали това се премества в CMakeLists на тест директория, след което стартирайте го няма.
Следващата стъпка е да създадете файл CMakeLists в директорията на SRC, за да бъдем честни, това само по себе си не е най-малък интерес, не е:

проект (Calc)
комплект (Calc_source calc.cpp)
add_library (изч STATIC $)

И последния файл в директорията на изпитването:

find_package (Boost КОМПОНЕНТИ unit_test_framework ЗАДЪЛЖИТЕЛНО)

комплект (test1_source main.cpp)
add_executable (test1 $)
target_link_libraries (test1 $ изчислено)

add_test (NAME Test1 УПРАВЛЕНИЕ test1)

Само да се различава от конвенционалните CMakeLists файл ще add_test екип. който се прехвърля на името на тест и какви заповеди да се работи, за да го стартирате. Т.е. този отбор може много добре да изглежда така:

add_test (testTkInter "/ ЮЕсАр / хамбар / питон" "-с" "внос Tkinter")

Сега, тестове за производителност може да се управлява с тест команда грим и резултатът ще бъде, както следва:

Тестовете се изпълняват.
Тест по проекта / Начало / astavonin / Проекти / AutoUnitTest
Започнете 1: Test1
1/1 Тест # 1: Test1. Приет 0.03 сек

100% тестове приет, 0 тестове неуспешни от 1

Общо време за тестване (реален) = 0,56 сек

Ако добавим още един тест, който трябва да се провали, резултатите са малко по-различни:

Тестовете се изпълняват.
Тест по проекта / Начало / astavonin / Проекти / AutoUnitTest
Започнете 1: Test1
1/2 тест # 1: Test1. Приет 0.00 сек
Започнете 2: Test2
2/2 Тест # 2: Test2. *** Неуспешно 0.00 сек

50% тестове минаха, един тестове не успяха от 2

Общо време за тестване (реален) = 0,46 сек

Следващите тестове не бе успешно:
2 - Test2 (Грешка)
Грешки по време на движение CTest

Конзолата приложения изход тест ще се съхраняват в директорията ./Testing/Temporary.
Един пример за напълно достъпна за изтегляне тук.

Свързани бележки:

Подкрепете проекта - споделете линка, благодаря!