Прежде всего, в описываемом вами сценарии наличие или отсутствие исключений является второстепенным.Если вы написали код для получения желаемого результата при отлове и обработке исключений, то этот результат - будь то возвращаемое значение или какой-то другой эффект - является наиболее важной вещью для тестирования.
Если исключения, которые вы не видели, приводили к тому, что этот результат был неверным, то проверка на правильный результат всегда выявляет проблемы.Если вы не знаете, каким будет ожидаемый результат, и заинтересованы только в том, обрабатываются ли исключения, что-то не так.Мы никогда не сможем определить, работает ли что-либо правильно, в зависимости от того, генерирует ли оно исключения.
Кроме того, вот как можно проверить, перехватывает ли ваш код и регистрирует ли исключения, которые иначе вы бы не смоглидля наблюдения:
Если вы вводите регистратор, который выглядит примерно так:
public interface ILogger
{
void LogError(Exception ex);
void LogMessage(string message);
}
... тогда простой подход - создать двойной тест, который хранит исключения так, чтобыВы можете проверить это и посмотреть, что было зарегистрировано.
public class ListLoggerDouble : ILogger
{
public List<Exception> Exceptions = new List<Exception>();
public List<string> Messages = new List<string>();
public void LogError(Exception ex)
{
Exceptions.Add(ex);
}
public void LogMessage(string message)
{
Messages.Add(message);
}
}
После того, как вы выполнили тестируемый метод, вы можете утверждать, что коллекция содержит ожидаемое исключение (я) или сообщение (я).Если вы хотите, вы также можете проверить, что их нет, хотя кажется, что это может быть избыточно, если результат, который вы проверяете, верен.
Я бы не стал создавать регистратор, который выбрасываетисключение, а затем написать тест, который проверяет на исключение.Это делает его похожим на ожидаемое поведение вашего кода - генерировать исключение, которое прямо противоположно тому, что он делает.Тесты помогают нам документировать ожидаемое поведение.Кроме того, что вы будете делать, если хотите убедиться, что вы обнаружили и зарегистрировали два исключения?