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


Практическое руководство. Развертывание файлов для тестов

 

Опубликовано: Апрель 2016

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

Расположения выполнения тестов

Visual Studio может выполнять тесты в перечисленных ниже расположениях.

Развертывание файлов теста для локального теста

Ниже описан оптимальный способ развертывания файлов теста.

  1. В рамках процесса сборки скопируйте файлы в целевой каталог сборки.

    • Если файлы относятся к одному тестовому проекту, включите их в тестовый проект Visual Studio в качестве файлов содержимого. Выберите их в обозревателе решений и задайте для свойства Копировать в выходной каталог значение Копировать более позднюю версию.

    • Также можно определить задачу после сборки, которая будет копировать файлы в выходной каталог сборки. Например:

      xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
      

      Откройте свойства тестового проекта. В проекте C# откройте страницу События сборки. В проекте Visual Basic откройте страницу Компиляция и выберите пункт События сборки. Добавьте команду копирования в поле Событие после сборки.

  2. Используйте DeploymentItemAttribute в методах или классах теста, чтобы задать файлы и папки, которые необходимо скопировать из выходного каталога сборки в каталог развертывания.

    [TestClass]
    class TestClass1
    {
      [TestMethod]
      [DeploymentItem("source", "targetFolder")]
      public void Test1()
      {
        string testData = System.IO.File.ReadAllText(@"targetFolder\source");
        ...
    } }
    
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("source", "targetFolder")> _
        Sub TestMethod1()
            Dim testData As String = _
                System.IO.File.ReadAllText(@"targetFolder\source")
        ...
        End Sub
    End Class
    
    • source — это файл или каталог для копирования. Путь может быть абсолютным или заданным относительно выходного каталога сборки.

    • Параметр targetFolder является необязательным. Это каталог, в который копируется содержимое исходного файла или каталога. Путь может быть абсолютным или заданным относительно каталога развертывания. Значение по умолчанию — ".", то есть каталог развертывания.

      Примечание

      targetFolder — это всегда каталог, а не путь к файлу.Изменить имя файла с помощью DeploymentItem невозможно.

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

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

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

    Чтобы это сделать, добавьте RUNSETTINGS-файл в решение, включите <DeploymentEnabled>False</DeploymentEnabled> и выберите этот файл в разделе Параметры тестирования меню Тест. Аналогичная ситуация возникает при запуске любого теста, для которого не используется атрибут DeploymentItemAttribute.

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

Что такое RUNSETTINGS-файл?

Файл с любым именем и расширением RUNSETTINGS. Он используется для настройки модульных тестов для определенных целей. Чтобы создать файл, скопируйте пример в разделе Настройка модульных тестов с помощью файла .runsettings. Поместите его в папку решения, а затем активируйте с помощью меню Тест > Параметры тестирования.

Ситуации, в которых следует использовать TESTSETTINGS-файл.

TESTSETTINGS-файл (то есть файл с любым именем и расширением TESTSETTINGS) — это более старая альтернатива RUNSETTINGS-файлу. Чтобы создать этот файл, перейдите в меню Тест > Параметры тестирования. Сохраните файл в папку решения и активируйте его с помощью меню Тест > Параметры тестирования.

По возможности избегайте использования TESTSETTINGS-файла, так как он замедляет выполнение тестов и несовместим со сторонними платформами тестирования. Он не требуется для простых модульных тестов. Однако такой файл может потребоваться в следующих случаях:

Если используется TESTSETTINGS-файл, сборки приложения и тестов всегда будут копироваться в папку развертывания.

Файлы данных и каталоги можно задать на странице Развертывание редактора файла .testsettings. Файлы копируются в папку развертывания перед каждым тестовым запуском. Пути к элементам, заданные на этой странице, всегда являются относительными по отношению к каталогу решения и всегда развертываются в папку развертывания вместе с приложением и тестовыми сборками.

Если требуется использовать абсолютные пути или задать другой целевой каталог, откройте файл .testsettings в редакторе XML и вставьте фрагмент, аналогичный следующему:

<Deployment>
  <DeploymentItem filename="C:\MyTestData\TestData.mdb"
        outputDirectory="D:\TestDB\" />
</Deployment>

Путь outputDirectory может быть абсолютным или заданным относительно каталога развертывания.

Ситуации, в которых используется отдельная папка развертывания

При выполнении тестов с помощью Visual Studio папка развертывания создается в папке TestResults в папке решения.

Отдельная папка развертывания используется, если какой-либо из методов или классов теста в тестовом запуске имеет атрибут DeploymentItem или если используется TESTSETTINGS-файл.

Если используется папка развертывания, перед выполнением тестов в папку развертывания копируются следующие файлы и папки:

  • Файл сборки теста.

  • Все зависимые сборки.

  • Файлы и каталоги, явно заданные с помощью атрибута DeploymentItemAttribute или в TESTSETTINGS-файле.

Локальная папка развертывания для тестов

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

Время и последовательность развертывания файлов

Во время тестового запуска все файлы, требующие развертывания, копируются до начала тестов. Тестовый запуск — это пакет тестов, запускаемых одной командой или запланированным событием. Это означает, что если задать файл данных, развертываемый для определенного метода теста, он будет доступен и для всех остальных тестов, выполняемых в этом запуске.

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

  1. Элементы, заданные с помощью атрибута DeploymentItemAttribute.

  2. Зависимости. Например, файлы конфигурации приложения и зависимые сборки.

  3. Элементы, заданные в TESTSETTINGS-файле, если он используется.

  4. Инструментированные двоичные файлы. Например, сборки, которые были инструментированы, чтобы обеспечить использование покрытия кода или IntelliTrace.

    Если используется инструментирование на месте, то двоичные файлы сначала инструментируются, а затем копируются в папку развертывания; в противном случае файлы сначала копируются, а потом подготавливаются. Инструментирование на месте используется по умолчанию для тестов, запускаемых на локальном компьютере.

  5. Один или несколько файлов, составляющие тест. Сюда относятся тестовые сборки (для модульных тестов), текстовые файлы и MHT-файлы (для ручных тестов), другие типы файлов для других типов тестов (например, для универсальных тестов).

Содержание каталога TestResults

  • Папка тестового запуска В каталоге TestResults содержится по одной папке для каждого тестового запуска. Его имя включает время создания.

    Если в TESTSETTINGS-файле заданы скрипты установки и очистки, они содержатся в папке тестового запуска.

  • Уменьшение. Каждая папка тестового запуска содержит папку с именем "Out". Папка "Уменьшение" (выходная папка) — это фактическая папка развертывания, в которую в начале тестового запуска копируются сборки и другие файлы развертывания.

  • В. Результаты покрытия кода и некоторые другие результаты тестов хранятся в папке "В".

См. также

DeploymentItemAttribute
Указание параметров тестирования для тестов Visual Studio
Инструментирование и повторная подпись сборок