2008-11-06 3 views
0

У меня есть classX:Weird блок Nunit Неудачный тест

Sub New (ByVal item_line_no As String, ByVal ITEM_TEXT As String)

' check to ensure that the parameters do not exceed the file template limits 
    Select Case item_line_no.Length 
     Case Is > m_item_line_no_capacity 
      Throw New ArgumentOutOfRangeException(item_line_no, "Line No exceeds 4 characters") 
     Case Else 
      Me.m_item_line_no = item_line_no 
    End Select 


    Select Case item_text.Length 
     Case Is > m_item_free_text_capacity 
      Throw New ArgumentOutOfRangeException("Free Text Exceeds 130 characters") 
     Case Else 
      Me.m_item_free_text = item_text 
    End Select 


End Sub 

и следующие Унти, чтобы проверить одну точку отказа

<ExpectedException(GetType(ArgumentOutOfRangeException), "Line No exceeds 4 characters")> _ 
<Test()> _ 
Sub testLineNoExceedsMaxLength() 
    Dim it As New X("aaaaa", "Test") 

End Sub 

Когда я запускаю тест, я ожидаю, что сообщение будет отправлено в исключение «Линия не превышает 4 символов»

Однако тестовый модуль выдает следующее сообщение

RecordTests.testLineNoExceedsMaxLength : FailedExpected exception message: Line No exceeds 4 characters 
         got: Line No exceeds 4 characters 
Parameter name: aaaaa 

Я думаю, что что-то простое, но это сводит меня с ума.

Примечание: в декларации ExpectedException я получаю устаревшую предупреждение о том, что вместо

<ExpectedException(GetType(ArgumentOutOfRangeException), "Line No exceeds 4 characters")> 

должно быть

<ExpectedException(GetType(ArgumentOutOfRangeException), ExpectedException="Line No exceeds 4 characters")> 

Однако это бросает ExpectedException не объявлена ​​ошибка!

ответ

2

Ok. Просто запустите это.

Сообщение для исключения является:

Line Нет превышает 4-х символов

Имя параметра: ааааа

(в том числе разрыва строки)

Вы должны указать все это как t он ожидал сообщения:

<ExpectedException(GetType(ArgumentOutOfRangeException), ExpectedMessage="Line No exceeds 4 characters" & VbCrLf & "Parameter name: aaaaa")> 
0

ExpectedExceptionAttribute устарел - т. Е. Вы не должны использовать его вообще. Лучшая рекомендация, которую я мог быстро найти по этому поводу, - это сообщение (оригинальная статья здесь).

Ваш аппарат тест будет намного понятнее, если она была переписана:

<Test()> _ 
Sub testLineNoExceedsMaxLength() 
    Try 

     Dim it As New X("aaaaa", "Test") 

    Catch ex as ArgumentOutOfRangeExcpetion 

     Assert.That (ex.Message, Is.Equal("Line No exceeds 4 characters")) 

    End Try 

End Sub 

Смотрите также эти статьи

0

Я не уверен, что согласен с тем, что ваш комментарий об атрибуте ExpectedException устарел.

Он все еще поддерживается прекрасно в 2.4 (версии я использую) это ExpectedMessage в этом случае, который является причиной проблемы устаревания

uUnit Exception Guide

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