Моя среда разработки на базе Microsoft выглядит так:
- огромная родная кодовая база c ++, разделенная на 10 проектов
- у каждого проекта есть зависимый тестовый проект (модульные тесты GoogleTest), источники тестирования просто ссылаются.
Я сгенерировал отчет о покрытии, используя vsinstr и vsperfmon (инструменты Visual Studio для инструментирования / мониторинга исполняемых файлов и библиотек DLL), но это было не так удовлетворительно, как я ожидал, поскольку отчет показывает только охват строк модульного теста , а не из тестируемых источников (я проинструктировал исполняемый файл testsuite Sample_Project_Test.exe).
Например, если у меня есть такой метод:
(Sample_Project/add_ints.cpp)
int add(int a, int b){
return a+b;
}
int add2(int a, int b){
if (a == b)
return a * 2;
else
return a+b;
}
и юнит тест выглядит так:
(Sample_Project_Test/int_adds_tests.cpp)
TEST(AddTest, ReturnsCorrectSum)
{
EXPECT_EQ(4, add(2,2));
}
Я получаю покрытие линии 100%, потому что ТОЛЬКО надстройка в add_ints.cpp измеряется, кажется, что add2 полностью удален, потому что он не затронут. Насколько я не понял всю вещь покрытия неправильно, это кажется неправильным?