В.Б. Как я могу модульный тест или макет функции Start () класса процесса? - PullRequest
0 голосов
/ 31 марта 2020

Я хочу провести модульное тестирование моей функции StartPro c в классе MyProgram. Мой модульный тест всегда пытается запустить actaul .exe, но я не хочу.

Public Interface IProcess

   Function StartProcess(path_to_exe As String) As Process

End Interface

Класс MyProcess, где я определил код для своей функции.

Public Class MyProcess

   Implements IProcess

   Public Function StartProcess(path_to_exe As String) As Process Implements IRegisafe.StartProcess

     Dim proc As New Process
     proc.StartInfo.FileName = path_to_exe

     Return proc

 End Function

End Class

Вот моя программа

Public Class MyProgram

  Private _proc As IProcess

  Public Sub New(proc As IProcess)

      _proc = proc

  End Sub

  Public Function StartProc(path As String) As Boolean

      Try

        Dim p As Process = _proc.StartProcess(path)
        Return p.Start()

      Catch ex As Exception
          Console.WriteLine(ex.Message)
          Return False
      End Try

  End Function

End Class

Мой модульный тест выглядит следующим образом.

<TestMethod()> Public Sub StartProc_WhenCanStarted_ShouldTrue()

      Dim path As String = "helloWorld.exe"

      Dim proc As New Process
      proc.StartInfo.FileName = path

      Dim mockP As Mock(Of IProcess) = New Mock(Of IProcess)
      mockP.Setup(Function(x) x.StartProcess(path)).Returns(proc)

      Dim controller = New MyProgram(mockP.Object)
      Dim started As Boolean = controller.StartProc(path)

      Assert.IsTrue(started)

End Sub

Как запустить модульный тест или пробную функцию () из правильно ли обрабатывать класс?

...