0

ユニットテストは初めてです。単体テストは以下で成功しています。Student.getCourse、unider Graduate.getCourse1、および post Graduate.getcourse1 は、"Student Course" <> "Student Course 1" などのテスト対象とは異なる値を返すため、失敗することが予想されます。

Imports NUnit.Framework
Imports NMock
Imports StudentCL

Namespace Test

    <TestFixture()>
    Public Class StudentTest
        Private _mocks As MockFactory
        Private _StudentMock As Mock(Of Student)
        Private _GraduateMock As Mock(Of Graduate)
        Private _UndergraduateMock As Mock(Of UnderGraduate)

        <SetUp()>
        Public Sub SetUp()
            _mocks = New MockFactory()
            _StudentMock = _mocks.CreateMock(Of Student)()
            _GraduateMock = _mocks.CreateMock(Of Graduate)()
            _UndergraduateMock = _mocks.CreateMock(Of UnderGraduate)()
        End Sub

        <Test()>
        Public Sub getStudentCourse()
            _StudentMock.Expects.One.Method(Function(x) x.getCourse1).WillReturn("Student Course1")
        End Sub

        <Test()>
        Public Sub getGraduateCourse()
            _GraduateMock.Expects.One.Method(Function(x) x.getCourse1).WillReturn("Graduate Course1")
        End Sub

        <Test()>
        Public Sub getUndergraduateCourse()
            _UndergraduateMock.Expects.One.Method(Function(x) x.getCourse1).WillReturn("Undergraduate Course1")
        End Sub

    End Class
End Namespace

Public MustInherit Class Student
    Public Overridable Function getCourse1() As String
        Return "Student course"
    End Function

End Class

Public Class Graduate
    Inherits Student

    Public Overrides Function getCourse1() As String
        Return "Graduate course"
    End Function

End Class

Public Class UnderGraduate
    Inherits Student

    Public Overrides Function getCourse1() As String
        Return "Undergraduate course"
    End Function

End Class

私は何が欠けていますか?

4

1 に答える 1

3

あなたのコードは実際には何もテストしていません。モックを設定するだけです。モック自体は役に立ちません。あなたが書いたことから、getCourse1関数の結果をテストしたいようです。テストの 1 つの例は、次のようになります。

<Test()> _
Public Sub getCourse1_WhenCalled_ReturnsExpected()
    ' Arrange
    Dim student As New Graduate()

    ' Act
    Dim course As String = student.getCourse1()

    ' Assert
    Assert.That(course, Iz.EqualTo("Graduate Course1")) ' This will fail as you expected.
End Sub

テスト メソッド名は、本The Art of Unit Testing に記載されている規則に従います。試験体は、AAA パターンと呼ばれる配列で配置されます。

于 2013-07-07T17:59:48.490 に答える