Практическое руководство. Развертывание файлов для тестов
Опубликовано: Апрель 2016
Перед выполнением теста необходимо скопировать тест, приложение и другие сборки, на которые они ссылаются, в расположение, в котором они могут выполняться. Как правило, для теста необходимы дополнительные файлы, такие как данные теста, файлы конфигурации, база данных и явно загружаемые сборки. Чтобы эти дополнительные файлы были доступны для теста, необходимо указать, что они должны быть развернуты.
Расположения выполнения тестов
Visual Studio может выполнять тесты в перечисленных ниже расположениях.
В выходной папке сборки, обычно <проект>\bin\Debug.
В локальной папке развертывания теста на том же компьютере, на котором расположена сборка.
На удаленном компьютере. Удаленное развертывание используется для тестирования распределенных приложений, веб-приложений и приложений, которые должны выполняться на определенной платформе. Для удаленного развертывания необходимо настроить контроллер тестирования и агенты тестирования. Обычно тесты выполняются в лабораторной среде. Дополнительные сведения об удаленном развертывании см. в разделе Практическое руководство. Выполнение теста с помощью контроллеров тестирования и агентов тестирования.
Развертывание файлов теста для локального теста
Ниже описан оптимальный способ развертывания файлов теста.
В рамках процесса сборки скопируйте файлы в целевой каталог сборки.
Если файлы относятся к одному тестовому проекту, включите их в тестовый проект Visual Studio в качестве файлов содержимого. Выберите их в обозревателе решений и задайте для свойства Копировать в выходной каталог значение Копировать более позднюю версию.
Также можно определить задачу после сборки, которая будет копировать файлы в выходной каталог сборки. Например:
xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
Откройте свойства тестового проекта. В проекте C# откройте страницу События сборки. В проекте Visual Basic откройте страницу Компиляция и выберите пункт События сборки. Добавьте команду копирования в поле Событие после сборки.
Используйте 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, копируются до начала тестового запуска.
Чтобы ускорить тестирование, модульные тесты может быть лучше выполнять непосредственно в выходном каталоге сборки. Это особенно полезно на сервере сборки после возврата тестов.
Чтобы это сделать, добавьте 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-файле.
Папки развертывания для локального тестового запуска
Время и последовательность развертывания файлов
Во время тестового запуска все файлы, требующие развертывания, копируются до начала тестов. Тестовый запуск — это пакет тестов, запускаемых одной командой или запланированным событием. Это означает, что если задать файл данных, развертываемый для определенного метода теста, он будет доступен и для всех остальных тестов, выполняемых в этом запуске.
Следующие элементы копируются в приведенном порядке. Если имена элементов совпадают, скопированные позже элементы перезаписывают предыдущие.
Элементы, заданные с помощью атрибута DeploymentItemAttribute.
Зависимости. Например, файлы конфигурации приложения и зависимые сборки.
Элементы, заданные в TESTSETTINGS-файле, если он используется.
Инструментированные двоичные файлы. Например, сборки, которые были инструментированы, чтобы обеспечить использование покрытия кода или IntelliTrace.
Если используется инструментирование на месте, то двоичные файлы сначала инструментируются, а затем копируются в папку развертывания; в противном случае файлы сначала копируются, а потом подготавливаются. Инструментирование на месте используется по умолчанию для тестов, запускаемых на локальном компьютере.
Один или несколько файлов, составляющие тест. Сюда относятся тестовые сборки (для модульных тестов), текстовые файлы и MHT-файлы (для ручных тестов), другие типы файлов для других типов тестов (например, для универсальных тестов).
Содержание каталога TestResults
Папка тестового запуска В каталоге TestResults содержится по одной папке для каждого тестового запуска. Его имя включает время создания.
Если в TESTSETTINGS-файле заданы скрипты установки и очистки, они содержатся в папке тестового запуска.
Уменьшение. Каждая папка тестового запуска содержит папку с именем "Out". Папка "Уменьшение" (выходная папка) — это фактическая папка развертывания, в которую в начале тестового запуска копируются сборки и другие файлы развертывания.
В. Результаты покрытия кода и некоторые другие результаты тестов хранятся в папке "В".
См. также
DeploymentItemAttribute
Указание параметров тестирования для тестов Visual Studio
Инструментирование и повторная подпись сборок