У меня большой проект, но в настоящее время в нем очень мало тестов. Охват на удивление высокий. Причина, по которой охват является высоким, заключается в том, что покрытие предоставляется только для файлов, которые имеют тесты !!
Мое покрытие фактически уменьшается, когда я добавляю больше тестов. Когда я добавляю новый тестовый файл, он вытягивает больше источников, и итоги операторов / ветвей / функций / линий увеличиваются.
В html-отчетах о покрытии большое количество классов вообще не перечислено.
Как мне включить ВСЕ исходные файлы в мой отчет о покрытии, даже если на них не ссылаются мои тесты?
Я потратил немного времени на изучение этого, но не могу понять, почему на землео них не сообщается.
(к сожалению, у меня нет доступа к SO с моего рабочего компьютера, поэтому я не могу напрямую скопировать / вставить что-либо здесь - мне приходится печатать примеры)
Основной областью конфигурации, представляющей интерес для этого, является загрузчик инструментов. Насколько я понимаю, istanbul-instrumenter-loader
добавляет дополнительный код в мой JavaScript (перенесено из Typescript). Затем запускаются тесты и собирается информация о покрытии. Затем репортер coverage-istanbul
сообщает о захваченных данных.
Моя конфигурация загрузчика:
{
test: /\.ts$/,
use: {
loader: "istanbul-instrumenter-loader",
options: {
esModules: true,
produceSourceMap: true
}
},
enforce: "post",
include: path.resolve("main"), // main is my src folder
exclude: /.spec.ts$/
}
Я попытался возиться с оператором включения здесь, изменив его на глобальное или регулярное выражениено ничего, что я пытался улучшить ситуацию.
Просто чтобы подтвердить, что мой файл tsconfig.spec.json
включает все источники, которые я хотел охватить, я намеренно вызвал ошибку компиляции на одном из файлов, который не был включен в покрытиесообщить и подтвердил, что эта ошибка обнаружена в тестовой компиляции.