Какие инструменты покрытия.Net поддерживают "покрытие условий"?

Я только начинаю с инструментами покрытия кода (прежде всего в C#). До сих пор я тестировал NCrunch и DotCover.

Похоже, они оба хорошо справляются с охватом филиалов и функций, но я не могу точно сказать, выполняют ли они условное покрытие. Например, в некотором коде, который я тестирую, показано следующее, как показано, пока есть хотя бы один путь (или я ошибаюсь?). Тем не менее, мне кажется, что это должно быть покрыто, только если оба логических пути в коде покрыты.

if (item != "")
{
    glc.AddGrayListItem(GrayListTypeEnum.BlackList, item);
}

Что я хотел бы знать, так это то, что DotCover или NCrunch (или любой другой инструмент для C#) скажут мне, что это не охватывается, если не протестированы оба случая (item!= Null) и (item == null).

Я просматривал различные сайты и, похоже, не могу найти однозначного ответа о том, работает ли какой-либо из этих инструментов таким образом, или есть другой инструмент, который работает таким образом. У кого-нибудь из вас есть точная информация о том, какие виды покрытия предоставляют или не предоставляют различные инструменты покрытия кода?

3 ответа

Решение

Лично я не знаю ни одного инструмента анализа покрытия, который бы сообщал вам о том, является ли гипотетический (отсутствует) else часть if Заявление было бы выполнено.

Текущая версия OpenCover будет охватывать это в показателях покрытия филиала:

В случае, если другие заинтересованы в ответе на этот вопрос... NCover - единственный инструмент, который я нашел, который выполняет работу до сих пор (2017). Я проверил покрытие кода Visual Studio Enterprise, NCrunch, Resharper dotCover, OpenCover и NDepend. Никто из них не поддержал запрошенный вами случай покрытия условий. NCover показывает покрытие условий 66,67%, если в вашем примере модульный тест не охватывает как истинные, так и ложные случаи.

Другие вопросы по тегам