单元测试Windows计划任务控制台应用程序

时间:2009-10-29 13:47:15

标签: unit-testing scheduled-tasks

我正在接管包含Console App项目的遗留系统,该项目在我们的生产服务器上作为计划任务运行。它主要生成每日和每周报告,进行一些数据库维护等。

控制台应用程序的“主”处理输入命令行参数并确定要执行的几个不同进程中的哪一个。像

这样的东西

模块MainModule

Public Sub Main()
    '--- Check if command line arguments were specified
    Dim args() As String = Environment.GetCommandLineArgs()
    If args.Length > 1 Then
        ConsoleMain(args)
    End If
End Sub

Public Sub ConsoleMain(ByVal args() As String)
    Dim rc As New Coordinator(enableEmails_)

    Try
        Dim arg_ As String = args(1)
        Dim success_ As Boolean = True

        Select Case arg_.ToUpper()
            Case TaskType.OrderIntegration
                success_ = rc.OrderIntegration()
            Case TaskType.Motivators
                success_ = rc.MotivatorsCreateFile(New CustomerMotivatorsManager)

       ... repeat for each of the various "Task Types"

结束模块

我的问题是: - 这是一个带有Main()和ConsoleMain()的控制台应用程序,我似乎没有任何可以从测试中访问的内容 - 即“主”和“ConsoleMain”似乎无法访问。我如何对这样的事情进行单元测试,以测试“if参数'x'被传递,函数'y'被称为”?

提前致谢,

1 个答案:

答案 0 :(得分:1)

我不确定为什么Main会在你的测试中看不到,除非VB.NET做了一些幕后工作来隐藏它。

在任何情况下,为什么不将代码移动到自己的类中?然后,您可以一次针对每个类运行单元测试,而不是一次执行整个过程。

单元测试通常针对各个类执行,而不是执行应用程序的主入口点。