Как мне написать модульный тест, который проверяет, вызвана ли подпрограмма? - PullRequest
1 голос
/ 20 декабря 2010
Public Class Class1

Public OutPut As String = ""
Public StoreThis As String = ""

Public Function GiveOutPut(ByVal s As String) As String

    OutPut = s + " OutPut"

    If s = "S" Then
        CallThis()
    End If

    Return OutPut

End Function

Public Sub CallThis()

    ///pretend something useful is going on here

End Sub

End Class

Конечно, этот пример довольно слабый, но как мне написать тестовый метод, который бы доказывал, что CallThis () вызывается каждый раз, когда входной параметр s = "S"?

Ответы [ 5 ]

3 голосов
/ 20 декабря 2010

Если что-то полезное происходит в CallThis, вы можете обнаружить побочный эффект в тестовом коде.

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

1 голос
/ 20 декабря 2010

Такие инструменты, как NCover или TFS Code Coverage, будут определять, какие биты вашего кода были вызваны.Вы также можете использовать debug.writeline для вывода в вашем тесте.

1 голос
/ 20 декабря 2010

Не уверен, что это лучший подход, но я бы установил логическую переменную уровня класса, которую установила бы вторая подпрограмма, а затем проверил эту переменную в тесте.Как то так:

Public Class Class1  

Public OutPut As String = "" 
Public StoreThis As String = "" 
Public Success as Boolean = False

   Public Function GiveOutPut(ByVal s As String) As String      
       OutPut = s + " OutPut"      
       If s = "S" Then
         CallThis()
       End If
       Return OutPut
   End Function

   Public Sub CallThis()
     ///pretend something useful is going on here
     Success = True
   End Sub

End Class
0 голосов
/ 20 декабря 2010

Используйте изолированную структуру, такую ​​как Rhino Mocks или Moq

0 голосов
/ 20 декабря 2010

Вам понадобится CallThis для создания какого-то внешнего эффекта, который вы можете проверить. Если вы кодируете это самостоятельно, то используйте переменную, например, область видимости. в классе, перед вызовом метода CallThis, установите для этой переменной значение false, затем внутри метода CallThis установите для него значение true, а затем убедитесь, что оно стало истинным в тесте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...