2009-10-29 117 views
1

我在接管包含一個控制檯應用程序項目,該項目運行作爲我們的生產服務器調度任務的遺留系統的過程。主要生產每日和每週報告,做一些數據庫維護等單元測試Windows計劃任務控制檯應用程序

的控制檯應用程序的「主」手柄輸入命令行參數,並確定哪幾個不同的程序來執行。喜歡的東西

模塊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(),我好像不具備我可以從測試中訪問的任何內容 - 即「Main」和「ConsoleMain」似乎無法訪問。我怎麼能單元測試這樣的事情,來測試「如果參數'x'被傳遞,函數'y'被稱爲」?

由於提前,

回答

1

我不知道爲什麼主不會從測試中可見,除非VB.NET做一些幕後的東西,窗簾來隱藏它。

在任何情況下,爲何不動你的代碼到自己的類(ES)?然後,您可以一次對每個類運行單元測試,而不是一次執行整個事件。

單元測試通常執行對單個類,而不是執行應用程序的主入口點。

+1

看來,它涉及到的主要在「模塊」是代替「類」。項目中其他類中的項目是可見的,在這個主要「模塊」中沒有任何內容。 我希望避免重構這個非常多,因爲它是一個非常明顯的生產工作。但是,將主邏輯提取到其自己的類中(以命令行參數作爲參數)是可能的。謝謝! – 2009-10-29 14:24:54

+0

很酷。既然這讓你朝着正確的方向發展,你會把這個標記爲答案嗎? (或者至少給我一個upvote?)欣賞它! – 2009-10-30 02:19:45

相關問題