Я установил Codecov для личного проекта (с открытым исходным кодом) в Qt. Проект все еще в основном незавершенный (всего пара классов, и я пытался достичь 100% покрытия на данный момент. Однако, глядя на заголовки этих двух классов в отчете Codecov, один виден как покрытый, а другой - нет, даже если для обоих из них есть модульные тесты, и они оба проходят.
Я проверил их обоих в Catch2:
#include "../thirdparty/catch/catch.hpp"
#include "character/attributes/attribute.h"
#define TEST_ATTRIBUTE_NAME "test-attribute"
#define TEST_ATTRIBUTE_VALUE 1
TEST_CASE("Attributes")
{
SECTION("should create new attribute correctly (name constructor)")
{
character::attribute sut(TEST_ATTRIBUTE_NAME);
REQUIRE(QString(TEST_ATTRIBUTE_NAME) == QString(sut));
REQUIRE(0 == int(sut));
}
SECTION("should create new attribute correctly (name and value constructor)")
{
character::attribute sut(TEST_ATTRIBUTE_NAME, TEST_ATTRIBUTE_VALUE);
REQUIRE(QString(TEST_ATTRIBUTE_NAME) == QString(sut));
REQUIRE(TEST_ATTRIBUTE_VALUE == int(sut));
}
}
Следуя принципу СУХОЙ, я не буду вставлять тестовый код для character::character
;)
Сначала я использовал директиву using character::attribute
в тесте атрибутов, поэтому я удалил ее, чтобы проверить, не вызывает ли пространство имен проблемы. Кроме того, я соответствовал модели скобок attribute
, чтобы соответствовать character
, но все безрезультатно.
Это не критическая проблема, но мне любопытно, что может быть причиной такого поведения и если / как это можно исправить. Кроме того, мне интересно, должен ли я на самом деле полностью отключить папку заголовков от проверок покрытия, но я думаю, что это не будет хорошей практикой.
Insights
Редактировать Глядя на вывод Кодекова на Трэвисе, я обнаружил, что есть три вхождения attribute.h
. Первый отображает следующую информацию:
File '.../attributes/attribute.h'
Lines executed:100.00% of 1
No branches
Calls executed:100.00% of 1
Creating '^#...#attributes#attribute.h.gcov'
В то время как два других вхождения показывают следующее:
File '.../attributes/attribute.h'
Lines executed:0.00% of 1
No branches
Calls executed:0.00% of 1
Creating '^#...#attributes#attribute.h.gcov'
Я подозреваю, что единственный рассматриваемый экземпляр - это последний, который показывает 0% выполнений, а не character.h
, который появляется в журнале только один раз.