У меня есть куча сборок с почти 100% -ным охватом тестирования, но я часто сталкиваюсь с ситуацией, подобной приведенной ниже. Я не могу проверить случай переключения по умолчанию, который существует для защиты от будущих ошибок, когда я добавляю больше элементов в перечисление, но забываю обновить оператор switch для поддержки новых элементов.
Я хотел бы иметь возможность найти шаблон, в котором я могу исключить этот "непроверяемый" код, проверить его или пометить эту строку кода (но не весь метод), который будет исключен анализом покрытия.
Это может показаться глупым, но я не хочу считать, что случай по умолчанию никогда не произойдет, и я не хочу связывать случай по умолчанию с тем, который уже существует. Я хочу, чтобы исключение возникало при создании таких ошибок. Что произойдет рано или поздно.
Я использую DotCover для расчета покрытия в настоящий момент.
Примечание: Это всего лишь пример кода, но я думаю, что он иллюстрирует довольно распространенный шаблон.
public class Tester
{
private enum StuffToDo
{
Swim = 0,
Bike,
Run
}
public void DoSomeRandomStuff()
{
var random = new Random();
DoStuff((StuffToDo)random.Next(3));
}
private void DoStuff(StuffToDo stuff)
{
switch (stuff)
{
case StuffToDo.Swim:
break;
case StuffToDo.Bike:
break;
case StuffToDo.Run:
break;
default:
// How do I test or exclude this line from coverage?
throw new ArgumentOutOfRangeException("stuff");
}
}
}