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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ПримечаниеПримечание

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

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

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

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

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

Установка времени ожидания для всех тестов

Чтобы задать время ожидания для всех тестов, с помощью файла параметров тестов теста

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

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

    Откроется диалоговое окно Параметры конфигурации.

  3. Выберите тайм-ауты тестов.

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

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

  6. Выберите Сохранить , а затем выберите Закрыть.

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

Переопределить значение времени ожидания теста на отдельного теста

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

  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
    

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

См. также

Задачи

Практическое руководство. Выбор активных параметров тестирования в Microsoft Visual Studio