Започнах да използвам Google Тест единични инструменти за тестване, които изграждам в тръбопровод за CI. Има ли инструмент за кодово покритие, който работи в корпуса и би ми позволил да задам прагове и да добавя като работа в тръбопровода?
За справка идвам от NodeJS фон и използвам тръбопровод, както следва:
- линтер (eslint)
- единични тестове (жасмин)
- кодово покритие (покритие от Истанбул && Istanbul check-coverage)
Битката, с която се боря, е третата стъпка.В NodeJS мога да задам приемливите прагове и заданието не успее, ако те не са изпълнени.
Надявах се да възпроизведа това за моя C ++ код. Възможно ли е това дори?
Отговори:
1 за отговор № 1Покритието на кода не е свързано с тестовата рамка, която използвате.
С C ++ в Linux, трябва да компилирате софтуера си със специални знамена, за да дадете възможност за покриване на кода, напр. с g ++ трябва да зададете аргумента --coverage
(и препоръчва се и деактивирането на всички оптимизации).
След това, когато стартирате тестовите програми, ще получите много файлове с данните за покритието в тях. Те могат да бъдат събрани и оценени, напр. lcov
.
lcov
може да създаде HTML страници с резултата, но също така отпечатва сумата от анализа на покритието stdout
, Така че, ще трябва да създадете скрипт, който да работи lcov
, филтрира изхода и съобщава за грешка или грешка в зависимост от измерения процент.
Btw, можете да зададете лимити за lcov
за да определите кога покритието е достатъчно или не, но това се използва само за цвета на фона в HTML изхода.
Във всяка от тези теми ще намерите няколко статии тук в Stackoverflow, как тези задачи могат да бъдат изпълнени.