0

私はclassXを持っています:

Sub New (文字列としての ByVal item_line_no、文字列としての ByVal item_text)

    ' 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

および次の unti で 1 つの障害点をテストします

<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 が宣言されていないというエラーをスローします!

4

3 に答える 3

2

Ok。これを実行するだけです。

例外のメッセージは次のとおりです。

行番号が 4 文字を超えています

パラメーター名: aaaaa

(改行含む)

このすべてを予想されるメッセージとして指定する必要があります。

<ExpectedException(GetType(ArgumentOutOfRangeException), ExpectedMessage="Line No exceeds 4 characters" & VbCrLf & "Parameter name: aaaaa")>
于 2008-11-06T11:09:49.323 に答える
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

これらの記事も参照してください

于 2008-11-06T10:51:48.160 に答える
0

ExpectedException 属性が非推奨であるというあなたのコメントに同意するかどうかはわかりません。

2.4(私が使用しているバージョン)でも完全にサポートされていますが、この場合はExpectedMessageであり、非推奨の問題を引き起こしています

uUnit例外ガイド

于 2008-11-06T11:01:59.807 に答える