Я запускаю несколько модульных тестов для службы WCF.Служба настроена на включение сведений об исключении в ответ на ошибку (со следующим в моем файле конфигурации службы).
<serviceDebug includeExceptionDetailInFaults="true" />
Если тест вызывает необработанное исключение на сервере, ошибка принимается клиентом сполностью заполненная трассировка стека сервера.Я могу увидеть это, вызвав метод ToString()
исключения.Проблема в том, что это, похоже, не выводится ни одним из бегунов, которые я пробовал (xUnit, Gallio, MSTest).Похоже, они просто выводят сообщение и свойства StackTrace исключения.
Чтобы проиллюстрировать, что я имею в виду, следующий модульный тест выведет три раздела:
- Сообщение об ошибке
- Трассировка стека ошибок
- Стандартный вывод на консоль (содержит информацию, которую я хотел бы получить, например, "Подробная информация о сбое равна ExceptionDetail, вероятно, создана IncludeExceptionDetailInFaults = true, чье значение: ..."
public void Test()
{
try
{
service.CallMethodWhichCausesException();
}
catch (Exception ex)
{
Console.WriteLine(ex); // this outputs the information I would like
throw;
}
}
Редактировать: Однако я бы предпочел, чтобы меня не заставляли ловить исключение в каждом тестеи запишите его в консоль, чтобы выяснить содержимое в свойстве FaultException
объекта Detail
.
Например,
public void Test()
{
service.CallMethodWhichCausesException();
}
Имея эту информациюсделает начальную фазу тестирования и развертывания намного менее болезненной.
Я знаю, что могу просто обернуть каждый модульный тест в общий обработчик исключений и записать исключение в консоль и перезапустить (каквыше) во всех моих модульных тестах, но это кажется очень многословным способом достижения этого (и выглядело бы довольно ужасно).
Кто-нибудь знает, есть ли способ включить эту информацию всякий раз, когда необработано возникла исключительная ситуация?Есть ли параметр, который мне не хватает?В моей сервисной конфигурации отсутствует надлежащая обработка ошибок?Возможно, я мог бы написать какой-нибудь плагин / адаптер для какой-то платформы модульного тестирования?Возможно, есть другая среда модульного тестирования, которую я должен использовать вместо этого!
Моя настоящая установка - это модульные тесты xUnit, выполняемые через Gallio для среды разработки, но у меня есть отдельный набор «тестов дыма»который я хотел бы, чтобы наши инженеры запускали через тестовый интерфейс xUnit GUI (или Gallio или что-то еще) для упрощения окончательного развертывания.
Спасибо.
Адам