2010-08-12 5 views
1

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

Мой вопрос:

Как я могу изменить сообщение об исключении и настроить его так, что я до сих пор у меня есть блок тестирования прохождения?

На самом деле я хочу настроить сообщение об исключении для «Студента» у Johny «были связанные файлы!» и как изменено сообщение об исключении API, при сбое тестирования модуля.

Johny это переменная, которая может измениться ...

Любая помощь, как я могу добиться выше. Благодаря


В моем тестовом классе я с

 [ExpectedException(ExceptionType = typeof(Exception), ExpectedMessage = "The DELETE statement conflicted with the REFERENCE constraint \"FK_Issue_Priority\"")] 

На самом деле я использую NHibernate и в моем API я обработки исключений следующим образом:

catch (NHibernate.ADOException exception) 
     { 
      if (exception.InnerException.GetType().Equals(typeof(System.Data.SqlClient.SqlException))) 
      { 
       if (exception.InnerException.Message.Contains("FK_Issue_Priority")) 
       { 
        throw new Exception("The DELETE statement conflicted with the REFERENCE constraint \"FK_Issue_Priority\""); 
       } 
       else 
       { 
        throw new Exception("A database error occurred while trying to add the customer to project relation please the see inner exception for details", exception.InnerException); 
       } 
      } 
      else 
      { 
       throw exception; 
      } 
     } 

ответ

2

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

Вместо у вас есть два варианта:

  1. получить новый класс на основе Exception специально для метания в этом методе (например, класс «RelatedFilesExistedException»). Единичное тестирование может просто проверить, возвращается ли правильный тип исключения, не беспокоясь о точном совпадении текста сообщения.

  2. Только частично соответствует сообщению об исключении (для которого вам придется писать свой собственный тестовый код, а не отвечать на атрибут ExpectedException).

+0

Спасибо, что ответили. Могу ли я привести пример, как это сделать? – learning

+1

В Visual Studio создайте новый файл класса и удалите определение класса. Затем используйте фрагмент «Исключение» для создания нового класса исключений (введите «Исключение», а затем TAB для запуска фрагмента), переименуйте класс в «СвязанныйFilesExistException». В коде вы создадите новое свойство RelatedFilesExistException вместо того, чтобы бросать новое исключение. В модульном тестировании используйте [ExpectedException (ExceptionType = typeof (RelatedFilesExistException)] –

0
  1. Создание различных классов исключений для различных вещей, как доктор Херби предложить.
  2. Я бы не использовал исключения для нормального потока управления. Для этого существуют другие языковые конструкции, например if-else. Исключения для исключительного поведения.
  3. Я бы не стал позволять пользователю нажимать на кнопку, на которую они не могут нажимать. Отображение сообщения вместо кнопки может быть более удобным для пользователя.

 Смежные вопросы

  • Нет связанных вопросов^_^