простой вопрос, как отобразить сообщение об исключении - PullRequest
1 голос
/ 12 августа 2010

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

Мой вопрос:

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

На самом деле я хочу настроить сообщение об исключении на "Ученик" У Джонни "были связанные файлы!"и как изменилось сообщение об исключении API, модульное тестирование не удалось.

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

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


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

        [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 ]

2 голосов
/ 12 августа 2010

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

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

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

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

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