Je suis en train de prendre en charge un système hérité qui contient un projet d'application console, qui est exécuté en tant que tâche planifiée sur nos serveurs de production. Il produit principalement des rapports quotidiens et hebdomadaires, assure la maintenance de certaines bases de données, etc.Unité testant une application de console de tâches planifiée Windows
Le principal de l'application console gère la saisie des arguments de la ligne de commande et détermine lequel de plusieurs processus différents doit être exécuté. Quelque chose comme
Module 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"
End Module
ma question est: - Ceci étant une application console avec un Main() et ConsoleMain(), je ne semble pas avoir tout ce que je peux accéder à partir d'un test - à savoir le "Main" et "ConsoleMain" ne semble pas être accessible. Comment puis-je tester unitairement quelque chose comme ça, pour tester le "si l'argument 'x' est passé, la fonction 'y' est appelée"?
Merci à l'avance,
Il semble que cela soit lié au fait que le Main soit dans un "Module" au lieu d'une "classe". Les éléments des autres classes du projet sont visibles, rien dans ce "Module" principal. J'espérais éviter de refactoriser cela, car c'est un travail de production très visible. Cependant, l'extraction de la logique principale dans sa propre classe (qui prend en paramètre les arguments de la ligne de commande) est une possibilité. Merci! –
Cool. Puisque cela vous a conduit dans la bonne direction, allez-vous marquer cela comme la réponse? (Ou au moins me donner un upvote?) Appréciez-le! –