Поделиться через


Практическое руководство. Установка ограничений по времени для выполнения тестов

Обновлен: Ноябрь 2007

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

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

Существует два способа установки ограничений по времени.

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

Установка ограничений по времени для тестов и тестовых запусков имеет следующее действие.

  • Когда продолжительность тестового запуска достигает значения времени ожидания, тестовый запуск прекращается, даже если некоторые тесты не были выполнены.

  • Когда продолжительность отдельного теста достигает значения времени ожидания, выполнение этого теста останавливается и тест помечается как Время ожидания. Тестовый запуск продолжается выполнением следующего теста.

Влияние методов инициализации на время ожидания тестовых запусков

Тестовый запуск может содержать методы AssemblyInitializeAttribute и ClassInitializeAttribute. Если эти методы определены, на их выполнение потребуется конечное количество времени, после чего будет запущен первый тест тестового запуска.

Промежуток времени, используемый методами инициализации, добавляется ко времени, используемому первым тестом. Это можно представить в виде формулы со следующими терминами.

  • Dt = общая продолжительность

  • Dr = продолжительность выполнения теста

  • I = методы инициализации для сборки и класса

  • Tn = тест, выполняющийся в произвольном месте тестового запуска

  • Tn = тест, выполняющийся в первой позиции в тестовом запуске

Следующее применяется ко всем тестам, следующим за первым тестам.

Dt**[Tn] = Dr[Tn]**

Обратите внимание на регистр:

Dt**[T1] = Dr[T1] + D[I]**

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

ms243175.alert_note(ru-ru,VS.90).gifПримечание.

Это ограничение может быть причиной ошибки только в первом тесте. Последующие тесты в тестовом запуске не затрагиваются.

Если тестовый запуск содержит методы инициализации, данное ограничение можно обойти следующим способом: применить к каждому тесту значение времени ожидания, превышающее сумму ожидаемого времени выполнения для метода теста и методов инициализации. Это действие необходимо выполнить для каждого теста. Поскольку модульное тестирование не поддерживает установку порядка выполнения тестов, предположить, какой тест будет выполняться первым, невозможно.

Влияние методов очистки на время ожидания тестовых запусков

Тестовый запуск может содержать методы AssemblyCleanupAttribute и ClassCleanupAttribute. По окончании этих методов тестовый запуск завершается.

Тестовому запуску может быть назначено значение времени ожидания. Промежуток времени, используемый методами очистки, добавляется к общему значению времени, используемому тестовым запуском. Другими словами, отсчет времени очистки выполняется в сторону временного ограничения, установленного в тестовом запуске, и может к времени ожидания тестового запуска.

Установка времени ожидания тестового запуска.

  1. Откройте обозреватель решений.

  2. В папке "Элементы решения" дважды щелкните файл конфигурации тестового запуска.

    Откроется диалоговое окно конфигурации тестового запуска.

  3. Щелкните Тайм-ауты тестов.

  4. Установите флажок Прервать тестовый запуск, если превышено общее время выполнения:

  5. Задайте значение тайм-аута тестового запуска в формате "часы:минуты:секунды".

  6. Нажмите кнопку Сохранить, затем нажмите кнопку Закрыть.

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

Установка времени ожидания тестового запуска с помощью конфигурации тестового запуска

  1. Откройте обозреватель решений.

  2. В папке "Элементы решения" дважды щелкните файл конфигурации тестового запуска.

    Откроется диалоговое окно конфигурации тестового запуска.

  3. Щелкните Тайм-ауты тестов.

  4. Установите флажок Пометить отдельный тест как ошибочный, если превышено общее время выполнения

  5. Задайте значение потестового тайм-аута в формате "часы:минуты:секунды".

  6. Нажмите кнопку Сохранить, затем нажмите кнопку Закрыть.

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

Установка времени ожидания тестового запуска с помощью свойства теста

  1. Откройте редактор списка тестов или окно представления теста.

  2. Выделите тест и нажмите клавишу F4.

    Откроется окно "Свойства" со свойствами данного теста.

  3. Свойству Время ожидания задайте значение в формате "часы:минуты:секунды".

    ms243175.alert_note(ru-ru,VS.90).gifПримечание.

    Значение времени ожидания ручного теста — "Infinite". Это значение изменить нельзя.

    Только в этом тесте заданное значение переопределяет потестовое значение времени ожидания, указанное в конфигурации тестового запуска. Потестовое значение времени ожидания не затрагивается.

Установка потестового времени ожидания с помощью атрибута модульного теста

  1. Откройте файл исходного кода модульного теста.

  2. Найдите атрибут TestMethod теста.

  3. Добавьте атрибут Timeout и параметр, выражающий значение времени ожидания.

    Значение времени ожидания выражается в миллисекундах.

    Пример (Visual C#):

    [TestMethod(), Timeout(80)]
    public void MyTestMethod()
    
    {
    // test code
    }
    

    Пример (Microsoft Visual Basic):

    <TestMethod(), Timeout(80)> _
    Public Sub MyTestMethod()
    
    ' test code
    
    End Sub
    

    Только в этом тесте заданное значение переопределяет потестовое значение времени ожидания, указанное в конфигурации тестового запуска. Потестовое значение времени ожидания не затрагивается.

См. также

Задачи

Практическое руководство. Задание конфигурации тестового запуска

Практическое руководство. Применение конфигурации тестового запуска