Модульное тестирование приложения консоли запланированных задач Windows - PullRequest
1 голос
/ 29 октября 2009

Я нахожусь в процессе захвата унаследованной системы, которая содержит проект консольного приложения, который запускается как запланированное задание на наших производственных серверах. В основном он генерирует ежедневные и еженедельные отчеты, выполняет некоторые операции с базой данных и т. Д.

«Главное» консольного приложения обрабатывает ввод аргументов командной строки и определяет, какой из нескольких различных процессов выполнить. Что-то вроде

Модуль 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 Ответ

1 голос
/ 29 октября 2009

Я не уверен, почему Main не будет виден из ваших тестов, если VB.NET не сделает что-то за кулисами, чтобы скрыть это.

В любом случае, почему бы не переместить ваш код в свой собственный класс? Затем вы можете запускать модульные тесты для каждого класса одновременно, а не выполнять все сразу.

Модульные тесты обычно выполняются для отдельных классов, а не для выполнения главной точки входа в приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...