http: //www.gravatar. лучший способ модульного тестирования ожидаемых ошибок от служб WCF? Я пытаюсь выполнить модульное тестирование службы WCF, которая (правильно) выбрасывает исключения FaultExceptions для определенной воспроизводимой ошибки. Модуль ... Какой лучший способ модульного тестирования ожидаемых ошибок от служб WCF?
Я пытаюсь выполнить модульное тестирование службы WCF, которая (правильно) генерирует исключения FaultExceptions для определенной воспроизводимой ошибки. Модульные тесты получают экземпляр клиента WCF и вызывают соответствующий метод службы, который вызывает исключение FaultException.
Все это работает, как и следовало ожидать, но у меня возникли трудности с модульным тестированием, потому что ошибка вызывает сбой IDE, когда ошибка не обнаруживается в реализации службы. Поскольку я использую ошибки, а не исключения, я ожидал, что IDE сериализует исключение и отправит его клиенту, где это вызовет исключение.
Я вижу, что есть опция конфигурации, позволяющая отключить взлом для определенных необработанных пользователем исключений, но я надеялся, что кто-то может указать лучший способ достижения тех же результатов, так как это нелегко сделать в командной среде. .
Вот пример кода того, как сейчас выглядит реализация ...
В проекте модульного тестирования есть ссылка на мою службу WCF, и я определил интерфейс как таковой:
[OperationContract(Name = "DoSomething")]
[FaultContract(typeof(EpicFail))]
ResponseObject DoSomething(RequestObject requestObject);
Ошибка определена как таковой:
[DataContract]
public class EpicFail
{
public EpicFail(string action)
{
this.Reason = "Epic Fail";
this.Action = action;
}
[DataMember]
public string Reason
{
get;
set;
}
[DataMember]
public string Action
{
get;
set;
}
}
Код, вызывающий службу, выглядит примерно так:
[TestMethod()]
[ExpectedException(typeof(FaultException))]
public void FaultTest_Fails_Epicly()
{
bool testPassed = false;
try
{
ResponseObject resp = GetServiceClient().DoSomething(req);
}
catch (FaultException)
{
testPassed = true;
}
Assert.IsTrue(testPassed);
}
- Я отредактировал код, чтобы показать, что я использую атрибут ExpectedException, и, похоже, он не оказывает большого влияния на сохранение среды IDE / Debugger от прерывания при возникновении исключения в службе.