我正在接管包含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'被称为”?
提前致谢,
答案 0 :(得分:1)
我不确定为什么Main会在你的测试中看不到,除非VB.NET做了一些幕后工作来隐藏它。
在任何情况下,为什么不将代码移动到自己的类中?然后,您可以一次针对每个类运行单元测试,而不是一次执行整个过程。
单元测试通常针对各个类执行,而不是执行应用程序的主入口点。