Я использую Google Test Framework для модульного тестирования моего кода, и я столкнулся с очень странной проблемой.
Я заметил, что любая строка, которая содержит динамическое размещение (new и delete), не получает полного покрытия, даже если код проходит через эти строки.
Я сделал простой пример, чтобы продемонстрировать проблему:
допустим, у меня есть следующий класс:
class DummyClass // fully covered
{
public:
int x;
DummyClass() { x = 5; }; // fully covered
~DummyClass() { }; // fully covered
};
Теперь у меня есть следующая функция, которая статически и динамически выделяет этот класс:
static void CoverageFunctionTest()
{
// any logic here
DummyClass staticVar1; // fully covered
DummyClass* dynamicVar = new DummyClass(); // partially covered
// any logic here
DummyClass staticVar2; // fully covered
delete dynamicVar; // partially covered
}
Строка с ключевым словом "new" и строка с "delete"
ключевые слова считаются частично покрытыми и не полностью покрытыми.
Охват этой функции: 88,24%, хотя мы охватили каждую строку в нем, а охват класса - 100%.
Как я могу получить 100% покрытие кода для этой функции?
Ty!