Какие шаблоны тестовых проектов имеются в visual studio 2012
Вы можете создать проект на языке из разряда C, используя шаблоны проектов C++. Найдите в созданном проекте файлы с расширением CPP и измените его на C. Затем на странице Свойства проекта проекта (а не решения) разверните узлы Свойства конфигурации, C/C++ и выберите Дополнительно. Измените значение параметра Компилировать как на Компилировать как C код (/TC).
Шаблоны проектов
Шаблоны проектов, входящие в Visual Studio, зависят от версии продукта и установленных рабочих нагрузок. если вы установили рабочую нагрузку разработка классических приложений на c++, Visual Studio содержит эти шаблоны проектов C++.
Настольный компьютер с Windows
Шаблон проекта | Описание |
---|---|
Консольное приложение Windows | Проект для создания консольного приложения Windows. |
Классическое приложение для Windows | Проект для создания классического приложения Windows (Win32). |
Библиотека динамической компоновки | Проект для создания библиотеки динамической компоновки (DLL). |
Статическая библиотека | Проект для создания статической библиотеки (LIB). |
Мастер классических приложений Windows | Мастер для создания классических приложений Windows и библиотек с дополнительными параметрами. |
Общие сведения
Шаблон проекта | Описание |
---|---|
Пустой проект | Пустой проект для создания приложения, библиотеки или DLL. Необходимо добавить требуемый код или ресурсы. |
Проект, использующий файл makefile | проект, который создает оболочку для Windows файла makefile в Visual Studioном проекте. (чтобы открыть файл makefile "как есть" в Visual Studio, используйте " открыть папку". |
Проект общих элементов | Проект, используемый для совместного использования файлов кода или файлов ресурсов между несколькими проектами. Этот тип проекта не создает исполняемый файл. |
Шаблон проекта | Описание |
---|---|
Проект ATL | Проект, использующий библиотеку шаблонных классов ATL. |
Шаблон проекта | Описание |
---|---|
Проект модульного теста в машинном коде | Проект, содержащий машинные модульные тесты C++. |
Если добавить компонент поддержки MFC и ATL в вашу установку Visual Studio, эти шаблоны проектов добавляются в Visual Studio.
Шаблон проекта | Описание |
---|---|
Приложение MFC | Проект приложения, которое использует библиотеку Microsoft Foundation Class (MFC). |
Элемент управления ActiveX библиотеки MFC | Проект элемента управления ActiveX, который использует библиотеку MFC. |
Библиотека DLL MFC | Проект библиотеки динамической компоновки (DLL), использующей библиотеку MFC. |
Универсальные приложения Windows
Если добавить компонент инструментов универсальной платформы Windows на C++ в вашу установку Visual Studio, эти шаблоны проектов добавляются в Visual Studio.
Обзор универсальных приложений Windows на C++ см. в разделе Универсальные приложения Windows (C++).
Шаблон проекта | Описание |
---|---|
Пустое приложение | Проект одностраничного приложения универсальной платформы Windows (UWP), которое не имеет предопределенных элементов управления или макета. |
Приложение DirectX 11 | Проект приложения универсальной платформы Windows, которое использует DirectX 11. |
Приложение DirectX 12 | Проект приложения универсальной платформы Windows, которое использует DirectX 12. |
Приложение DirectX 11 и XAML | Проект для приложения универсальной платформы Windows, которое использует DirectX 11 и XAML. |
Приложение модульных тестов | Проект приложения модульного тестирования для приложений универсальной платформы Windows (UWP). |
DLL | Проект для библиотеки динамической компоновки с машинным кодом (DLL), который может использоваться компонентами среды выполнения или приложениями универсальной платформы Windows. |
Статическая библиотека | Проект для статической библиотеки с машинным кодом (LIB), который может использоваться компонентами среды выполнения или приложениями универсальной платформы Windows. |
Компонент среды выполнения Windows | Проект для компонента среды выполнения Windows, который может использоваться приложениями универсальной платформы Windows вне зависимости от языка программирования, на котором они написаны. |
Проект упаковки приложений Windows | Проект, создающий пакет UWP, который позволяет загрузить классическое приложение в неопубликованном виде либо распространять его через Microsoft Store. |
Комментарии TODO
Многие файлы, создаваемые шаблоном проекта, содержат комментарии TODO, помогающие найти места для вставки собственного исходного кода. Дополнительные сведения о добавлении кода см. в разделах Добавление функциональных возможностей с помощью мастеров кода и Работа с файлами ресурсов.
Шаблоны проектов и элементов предоставляют многократно используемые заглушки, обеспечивающие пользователям определенный базовый код, и структуры, которые можно использовать в своих целях.
шаблоны Visual Studio
Для пользователей эти шаблоны представляют собой отправную точку, с которой можно начать создание новых проектов или расширение текущих проектов. Шаблоны проектов предоставляют файлы, необходимые для конкретного типа проекта, включая стандартные ссылки на сборки, задают свойства проекта и параметры компилятора по умолчанию. По сложности шаблоны элементов могут варьироваться от одного пустого файла с определенным расширением до нескольких файлов исходного кода, которые содержат код заглушек, файлы сведений о конструкторе и внедренные ресурсы.
Вы можете использовать установленные шаблоны, создавать собственные шаблоны, а также скачивать и использовать шаблоны, созданные сообществом. Дополнительные сведения см. в статьях Практическое руководство. Создание шаблонов проектов и Практическое руководство. Создание шаблонов элементов.
Содержимое шаблона
Все шаблоны проектов и элементов, установленные с Visual Studio или созданные пользователем, работают на основе одних и тех же принципов и имеют схожее содержимое. Все шаблоны содержат следующие элементы:
- Файлы, создаваемые при использовании шаблона. Сюда входят файлы с исходным кодом, внедренные ресурсы, файлы проектов и т. д.
- Файл VSTEMPLATE, который содержит метаданные, необходимые для создания проекта или элемента из шаблона, а также для отображения шаблона в окнах Новый проект и Добавление нового элемента.
- Файл VSTEMPLATE, который содержит метаданные, необходимые для создания проекта или элемента из шаблона, а также для отображения шаблона на странице Создание проекта и в диалоговом окне Добавление нового элемента.
Дополнительные сведения о VSTEMPLATE-файлах см. в статьях о тегах шаблона и параметрах шаблона.
Если эти файлы сжаты в ZIP-файл и помещены в соответствующую папку, Visual Studio автоматически отображает их в следующих расположениях:
- К шаблонам проектов относятся файлы проекта, файлы кода и другие ресурсы, настроенные для создания приложения или компонента, которые может загрузить и использовать приложение.
- Шаблоны элементов — это файлы проекта, которые содержат часто используемые код и XAML, которые можно добавить в проект, чтобы ускорить разработку. Например, с помощью шаблона элемента можно добавить в приложение новое окно, страницу или элемент управления.
Дополнительные сведения об установке и настройке Visual Studio для получения доступа к этим шаблонам см. в статье Установка инструментов для Windows App SDK.
Шаблоны WinUI
WinUI 3 предоставляется в пакете SDK для приложений Windows. Она включает пакет VSIX для Visual Studio 2019 и более поздних версий с шаблонами проектов и элементов, которые помогут приступить к созданию приложений с помощью интерфейса на основе WinUI.
Дополнительные сведения о доступных шаблонах проектов и элементов WinUI см. в статье Шаблоны WinUI 3 в Visual Studio.
Шаблоны UWP
Шаблоны проектов для C++ и UWP
Для создания приложений UWP можно использовать две технологии C++:
- Рекомендуемая технология — C++/WinRT. Это проекция языка C++, которая полностью реализована в файлах заголовков и предназначена для предоставления эффективного и удобного доступа к современному API WinRT.
- Кроме того, можно использовать более старый набор расширений C++/CX. C++/CX по-прежнему поддерживается, но мы рекомендуем вместо него использовать C++/WinRT.
Чтобы получить доступ к шаблонам проектов UWP C++, когда вы создаете проект в Visual Studio, отфильтруйте язык, выбрав C++ , платформу, выбрав Windows, и тип проекта, выбрав значение UWP.
По умолчанию рабочая нагрузка Разработка приложений для универсальной платформы Windows в Visual Studio предоставляет доступ только к шаблонам проектов C++/CX. Чтобы получить доступ к шаблонам проектов C++/WinRT, необходимо установить пакет VSIX C++/WinRT.
Эти шаблоны проектов можно использовать для создания приложений UWP на C++.
Шаблон | Описание |
---|---|
Пустое приложение (C++/WinRT) | Создает приложение UWP C++/WinRT с пользовательским интерфейсом XAML. Созданный проект содержит базовую страницу, производную от класса Windows.UI.Xaml.Controls.Page, с помощью которой можно приступить к созданию пользовательского интерфейса. |
Приложение основных компонентов (C++/WinRT) | Создает приложение UWP C++/WinRT, которое использует CoreApplication для интеграции с различными платформами пользовательского интерфейса вместо пользовательского интерфейса XAML. См. пошаговые инструкции по созданию с помощью этого шаблона проекта простой игры UWP, использующей DirectX. |
Пустое приложение (универсальное приложение для Windows — C++/CX) | Создает приложение UWP C++/WinRT с пользовательским интерфейсом XAML. Созданный проект содержит в библиотеке WinUI базовую страницу, производную от класса Windows.UI.Xaml.Controls.Page, с помощью которой можно приступить к созданию пользовательского интерфейса. |
Приложение DirectX 11 и XAML (универсальное приложение для Windows — C++/CX) | Создает приложение UWP, которое использует DirectX 11 и SwapChainPanel, чтобы можно было использовать элементы управления пользовательского интерфейса XAML. Дополнительные сведения см. в статье Шаблоны проектов игр DirectX. |
Приложение DirectX 11 (универсальное приложение для Windows — C++/CX) | Создает приложение UWP, которое использует DirectX 11. Дополнительные сведения см. в статье Шаблоны проектов игр DirectX. |
Приложение DirectX 12 (универсальное приложение для Windows — C++/CX) | Создает приложение UWP, которое использует DirectX 12. Дополнительные сведения см. в статье Шаблоны проектов игр DirectX. |
Приложение модульных тестов (универсальное приложение для Windows — C++/CX) | Создает проект модульного теста в C++/CX для приложения UWP. Дополнительные сведения см. в статье о тестировании DLL-библиотеки C++ UWP. |
С помощью этих шаблонов проектов можно создавать фрагменты приложений UWP на C++.
Шаблон | Описание |
---|---|
Компонент среды выполнения Windows (C++/WinRT) | Создает компонент среды выполнения Windows на C++/WinRT, который может использоваться в любом приложении UWP, независимо от того, на каком языке программирования такое приложение написано. |
Компонент среды выполнения Windows (универсальные приложения для Windows) | Создает компонент среды выполнения Windows на C++/CX, который может использоваться в любом приложении UWP, независимо от того, на каком языке программирования такое приложение написано. |
Библиотека DLL (универсальные приложения для Windows) | Проект для создания библиотеки динамической компоновки (DLL), которую можно использовать в приложении UWP, на C++/CX. Дополнительные сведения см. в статье Библиотеки DLL (C++/CX). |
Статическая библиотека (универсальные приложения для Windows) | Проект для создания статической библиотеки (LIB), которую можно использовать в приложении UWP, на C++/CX. Дополнительные сведения см. в статье Статические библиотеки (C++/CX). |
Шаблоны классических приложений C++ (Win32)
Visual Studio предоставляет разнообразные шаблоны проектов для создания классических приложений для Windows с использованием нативного C++ и прямым доступом к API Win32. Чтобы использовать эти шаблоны проектов, при установке Visual Studio необходимо включить рабочую нагрузку Разработка классических приложений на C++ . Эта рабочая нагрузка включает шаблоны проектов для создания классических и консольных приложений, а также библиотек.
Рекомендуемая технология — C++/WinRT. Это проекция языка C++, которая полностью реализована в файлах заголовков и предназначена для предоставления эффективного и удобного доступа к современному API WinRT.
Шаблоны проектов для классических приложений С++
Чтобы получить доступ к шаблонам проектов C++ для классических приложений, когда вы создаете проект в Visual Studio, отфильтруйте язык, выбрав C++ , платформу, выбрав Windows, и тип проекта, выбрав значение Desktop (Классическое приложение).
Шаблон | Описание |
---|---|
Классическое приложение для Windows (C++/WinRT) | Создает клиентское приложение C++/WinRT для рабочего стола Windows. Дополнительные сведения см. в разделе Классическое приложение Windows (C++/WinRT). Для этого шаблона проекта требуется VSIX C++/WinRT. |
Классическое приложение для Windows | Создает классическое приложение для Windows с использованием C++. Дополнительные сведения см. в статье Пошаговое руководство. Создание традиционного классического приложения для Windows (C++). |
Мастер классических приложений Windows | Это пошаговый мастер, с помощью которого можно создать один из следующих типов проектов: классическое приложение для Windows, консольное приложение, библиотека динамической компоновки (DLL) или статическая библиотека. Дополнительные сведения см. в статьях Мастер классических приложений Windows и Пошаговое руководство. Создание традиционного классического приложения для Windows (C++). |
Проект упаковки приложений Windows | Создает проект, с помощью которого можно разработать классическое приложение в пакете MSIX. Благодаря этому пользователь получает современные методы развертывания, возможности интеграции с компонентами Windows через расширения пакетов и многое другое. Дополнительные сведения см. в статье о Проекте упаковки приложений Windows. |
Шаблоны проектов для консольных приложений С++
Чтобы получить доступ к шаблонам проектов C++ для консольных приложений, отфильтруйте язык, выбрав C++ , платформу, выбрав Windows, и тип проекта, выбрав значение Console (Консольное приложение).
Шаблон | Описание |
---|---|
Консольное приложение для Windows (C++/WinRT) | Создает консольное приложение C++/WinRT без пользовательского интерфейса. Дополнительные сведения см. в статье Краткое руководство по C++/WinRT. Для этого шаблона проекта требуется VSIX C++/WinRT. |
Консольное приложение | Создает консольное приложение без пользовательского интерфейса. Дополнительные сведения см. в статье Пошаговое руководство. Создание стандартной программы C++. |
Пустой проект | Пустой проект для создания приложения, библиотеки или DLL. Необходимо добавить требуемый код или ресурсы. |
Шаблоны проектов для библиотек С++
Чтобы получить доступ к шаблонам проектов C++ для библиотек, отфильтруйте язык, выбрав C++ , платформу, выбрав Windows, и тип проекта, выбрав значение Библиотека.
Шаблон | Описание |
---|---|
Библиотека динамической компоновки (DLL) | Проект для создания библиотеки динамической компоновки (DLL). Дополнительные сведения см. в статье Пошаговое руководство. Создание и использование собственной библиотеки динамической компоновки (C++). |
Статическая библиотека | Проект для создания статической библиотеки (LIB). Дополнительные сведения см. в статье Пошаговое руководство. Создание и использование статической библиотеки. |
Шаблоны элементов для классических приложений С++
Шаблоны проектов C++ включают множество шаблонов элементов, с помощью которых можно выполнять такие задачи, как добавление в проект новых файлов и ресурсов. Полный список см. в статье об использовании шаблонов Visual C++ в диалоговом окне "Добавление нового элемента".
Шаблоны проектов Visual Studio позволяют разработчикам более эффективно создавать несколько схожих проектов, определяя общий набор начальных файлов. Шаблоны проектов могут быть полностью кастомизированы в соответствии с потребностями команды разработчиков или группы и могут быть опубликованы в Visual Studio Marketplace для загрузки и использования другими людьми! После публикации разработчики могут установить шаблон и получить к нему доступ через диалоговое окно New Project в Visual Studio.
Недавно разработанное диалоговое окно New Project для Visual Studio 2019 было создано, чтобы помочь разработчикам быстрее добираться до своего кода. Используя опыт поиска и фильтрации, мы стремимся обеспечить лучшее обнаружение для конкретных шаблонов, чтобы вы могли быстрее начать разработку своего приложения.
В этом пошаговом руководстве вы научитесь:
- Созданию шаблона проекта
- Добавлению тегов или фильтров в шаблон проекта
- Развертыванию шаблона в качестве расширения с шаблоном VSIX project
Создание шаблона проекта
Добавление тегов/фильтров в шаблон вашего проекта
После того как вы создали шаблон проекта, можно добавить к нему тег или фильтры в шаблоне .vstemplate XML-файла.
-
Добавьте встроенные теги Visual Studio, а также любые пользовательские теги в шаблон проекта, используя элементы LanguageTag, PlatformTag, ProjectTypeTagв разделе TemplateDataи сохраните файл. Например, как выделено на скриншоте ниже:
Развертывание шаблона в качестве расширения с помощью шаблона VSIX project
Оберните шаблон проекта в шаблон VSIX project, чтобы развернуть его как расширение.
В Solution Explorer щелкните правой кнопкой мыши на VSIX project и выберите Set as StartUp Project. Ваш Solution Explorer должен теперь выглядеть примерно так (с выделенным жирным VSIX project):
- Кликните Assets и выберите New.
- Установите поле Type как Microsoft.VisualStudio.ProjectTemplate.
- Установите поле Source как A project in current solution.
- Установите поле Project в качестве шаблона проекта.
Есть предложения?
Мы продолжаем работать над нашими инструментами, и для этого нам нужна ваша помощь! Пожалуйста, поделитесь своими отзывами/комментариями ниже, или через Developer Community Visual Studio, или твитнув нашей команде @VisualStudio.
Visual Studio автоматически создаст заглушку для тестового проекта, с которого мы и начнем.
Создание проекта модульного теста в Visual Studio
Модульные тесты обычно размещаются в отдельном проекте (в результате получается отдельная сборка) из кода вашего приложения. В Visual Studio 2008 или 2012 вы можете создать проект модульного теста, щелкнув правой кнопкой мыши решение и выбрав Add, а затем New Project из всплывающего меню:
В открывшемся диалоговом окне выберите тестовый проект:
Для пользователей Visual Studio 2008
Visual Studio 2008 также создаст класс TestContext – его больше нет в VS2012, и мы его игнорируем, – вместо этого используйте предыдущий заглушку из VS2012.
Также удалите файл «ManualTest1.mht», в противном случае вам будет предложено выбрать результаты теста и ввести примечания к тесту вручную.
Испытательные приспособления
Обратите внимание, что класс украшен атрибутом TestClass. Это определяет тестовое устройство – набор тестовых методов.
Методы испытаний
Обратите внимание, что метод украшен атрибутом TestMethod. Это определяет метод, который будет запускать тестовое устройство.
Класс Assert
Класс assert определяет следующие статические методы, которые можно использовать для проверки вычисления метода:
- AreEqual / AreNotEqual
- AreSame / AreNotSame
- IsTrue / IsFalse
- IsNull / IsNotNull
- IsInstanceOfType / IsNotInstanceOfType
Многие из этих утверждений перегружены, и рекомендуется ознакомиться с полной документацией, которую предоставляет Microsoft.
Основы утверждения
Обратите внимание, что в следующих примерах используется VS2008.
Утверждения являются основой каждого теста. В отношении результатов теста можно сделать множество утверждений. Для начала напишем простое утверждение, в котором говорится «один равен одному», другими словами, трюизм:
Запустите тест, который должен привести к «Пройдено»:
AreEqual / AreNotEqual
Методы AreEqual и AreNotEqual сравнивают:
- объекты
- двойники
- одиночный разряд
- строки
- типизированные данные
Что касается равенства объектов, этот метод сравнивает, идентичны ли экземпляры:
Предыдущий тест проходит, так как object1 и object2 не равны. Однако если класс переопределяет метод Equals, тогда равенство основывается на сравнении, выполненном методом Equals, реализованным в классе. Например:
AreSame / AreNotSame
Эти два метода проверяют, совпадают ли экземпляры (или нет). Например:
Несмотря на то, что класс AnObject переопределяет оператор Equals, предыдущий тест проходит, поскольку экземпляры двух объектов не совпадают.
IsTrue / IsFalse
Эти два метода позволяют вам проверить истинность сравнения значений. С точки зрения читабельности методы IsTrue и IsFalse обычно используются для сравнения значений , тогда как AreEqual и AreSame обычно используются для сравнения экземпляров (объектов).
Это подтверждает это значение свойства.
IsNull / IsNotNull
Эти два теста проверяют, является ли объект нулевым или нет:
IsInstanceOfType / IsNotInstanceOfType
Эти два метода проверяют, является ли объект экземпляром определенного типа (или нет). Например:
неубедительный
Метод Assert.Inconclusive можно использовать, чтобы указать, что ни тест, ни функциональность, стоящая за тестом, еще не реализованы, и поэтому тест не является окончательным.
Что происходит, когда утверждение не выполняется?
Что касается модульного тестирования Visual Studio, то при сбое утверждения метод Assert создает исключение AssertFailedException. Это исключение никогда не должно обрабатываться вашим тестовым кодом.
Другие классы утверждений
Есть два других класса утверждений:
Как видно из их названий, эти утверждения работают с коллекциями и строками соответственно.
Сборник утверждений
Эти методы реализованы в классе Microsoft.VisualStudio.TestTools.UnitTesting.CollectionAssert. Обратите внимание, что параметр коллекции в этих методах предполагает, что коллекция будет реализовывать ICollection (в отличие от NUnit, который ожидает IEnumerable).
AllItemsAreInstanceOfType
Это утверждение проверяет, что объекты в коллекции имеют один и тот же тип, который включает в себя производные типы ожидаемого типа, как показано здесь:
AllItemsAreNotNull
Это утверждение проверяет, что объекты в коллекции не являются нулевыми.
AllItemsAreUnique
Этот тест гарантирует, что объекты в коллекции являются уникальными. Если сравнивать структуры:
структуры сравниваются по значению, а не по экземпляру – предыдущий тест не проходит. Однако, даже если класс переопределяет метод Equals:
этот тест проходит:
AreEqual / AreNotEqual
Эти тесты утверждают, что две коллекции равны. Методы включают в себя перегрузки, которые позволяют предоставить метод сравнения. Если объект переопределяет метод Equals, этот метод будет использоваться для определения равенства. Например:
Эти две коллекции равны, потому что класс AnObject переопределяет метод Equals (см. Предыдущий пример).
Обратите внимание, что для передачи утверждения списки должны иметь одинаковую длину и считаться не равными, если списки идентичны, за исключением другого порядка. Сравните это с утверждением AreEquivalent, описанным ниже.
AreEquivalent / AreNotEquivalent
Это утверждение сравнивает два списка и считает списки равных элементов эквивалентными независимо от порядка. К сожалению, в реализации есть ошибка, так как этот тест не пройден:
Принимая во внимание, что реализация NUnit этого утверждения проходит:
Содержит / DoesNotContain
Это утверждение проверяет, что объект содержится в коллекции:
используя метод Equals (если он переопределен) для выполнения теста на равенство.
IsSubsetOf / IsNotSubsetOf
Это утверждение проверяет, что первый параметр (подмножество) содержится в коллекции второго параметра (надмножество).
Обратите внимание, что тест подмножества не проверяет порядок или последовательность – он просто проверяет, содержатся ли элементы в списке подмножеств в надмножестве.
Строковые утверждения
Эти методы реализованы в классе Microsoft.VisualStudio.TestTools.UnitTesting.StringAssert:
- Содержит
- Матчи / DoesNotMatch
- StartsWith / EndsWith
Это обсуждается далее.
Содержит
Метод Contains утверждает, что подмножество (обратите внимание, что это второй параметр) содержится в строке (первый параметр). Например, этот тест проходит:
Матчи / DoesNotMatch
Этот метод утверждает, что строка (первый параметр) соответствует шаблону регулярного выражения, предоставленному во втором параметре.
StartsWith / EndsWith
Этот метод утверждает, что строка (первый параметр) либо начинается, либо заканчивается другой строкой (второй параметр).
Исключения
Исключения могут быть проверены без написания блоков try-catch вокруг метода test. Например, пока вы могли бы написать это:
Намного удобнее использовать атрибут ExpectedException в тестовом методе:
Другие полезные атрибуты
Существуют некоторые дополнительные атрибуты, которые полезны для запуска набора тестов, а также отдельных тестов, которые улучшают возможность повторного использования и читаемость базы кода модульных тестов.
Настройка / Teardown
Модуль модульного тестирования Visual Studio предоставляет четыре дополнительных атрибута метода:
- ClassInitialize
- ClassCleanup
- TestInitialize
- TestCleanup
Эти атрибуты предшествуют и следуют за выполнением всех тестов в приборе (классе), а также до и после каждого теста в приборе.
Обратите внимание, что методы, украшенные этим атрибутом, должны быть статическими.
ClassInitialize
Если метод украшен этим атрибутом, код в методе выполняется до запуска всех тестов в приборе. Обратите внимание, что этот метод требует параметр TestContext.
Этот метод полезен для выделения ресурсов или создания экземпляров классов, на которые полагаются все тесты в приборе. Важное соображение, касающееся ресурсов и объектов, созданных во время инициализации устройства, заключается в том, что эти ресурсы и объекты следует рассматривать только для чтения. Тестам не рекомендуется изменять состояние ресурсов и объектов, от которых зависят другие тесты. Это включает в себя подключения к таким службам, как база данных и веб-службы, чье подключение может быть переведено в недопустимое состояние в результате ошибки в тесте, что делает недействительными все остальные тесты. Кроме того, порядок выполнения тестов не гарантируется. Изменение состояния ресурса и объекта, созданного при инициализации прибора, может привести к побочным эффектам в зависимости от порядка выполнения тестов.
ClassCleanup
Метод, украшенный этим атрибутом, отвечает за освобождение ресурсов, закрытие соединений и т. Д., Которые были созданы во время инициализации класса. Этот метод всегда будет выполняться после запуска тестов внутри прибора, независимо от того, успешны они или нет.
TestInitialize
Подобно атрибуту ClassInitialize, метод, украшенный этим атрибутом, будет выполняться для каждого теста до его запуска. Одной из целей этого атрибута является обеспечение того, чтобы ресурсы или объекты, выделенные кодом ClassInitialize, инициализировались в известное состояние перед выполнением каждого теста.
TestCleanup
В дополнение к атрибуту TestInitialize методы, украшенные TestCleanup, будут выполняться при завершении каждого теста.
Настройка и демонтаж
Следующий код демонстрирует последовательность настройки и демонтажа прибора по отношению к фактическим тестам:
Запуск этого устройства приводит к следующей трассировке выходных данных отладки:
Как показано в предыдущем примере, прибор инициализируется – затем для каждого теста выполняется настройка теста и код разрыва, после чего в конце завершается разбор прибора.
Менее часто используемые атрибуты
В следующем разделе описаны менее часто используемые атрибуты.
AssemblyInitialize / AssemblyCleanup
Методы, украшенные этим атрибутом, должны быть статическими и выполняться при загрузке сборки. Возникает вопрос: что если в сборке имеется более одного тестового устройства?
Если вы попробуете это, тестовый механизм не сможет запустить какие-либо модульные тесты, сообщив:
«UTA013: UnitTestExamplesVS2008.Fixture2: невозможно определить более одного метода с атрибутом AssemblyInitialize внутри сборки».
Поэтому для сборки может существовать только один метод AssemblyInitialize и один метод AssemblyCleanup, независимо от количества тестовых приборов в этой сборке. Поэтому рекомендуется, чтобы никакие фактические тесты не помещались в класс, который определяет эти методы:
в результате получается следующая последовательность выполнения:
Обратите внимание на дополнительные вызовы инициализации и очистки сборки.
игнорировать
Этот метод может украшать определенные методы или целые приборы.
Игнорировать метод испытаний
Если этот атрибут украшает метод теста:
тест не запустится. К сожалению, панель результатов теста Visual Studio не указывает на то, что в настоящее время игнорируются тесты:
Сравните это с NUnit, который ясно показывает проигнорированные тесты:
Дисплей NUnit помечает все тестовое дерево как «неизвестное», если один или несколько методов теста помечены как «Игнорировать»
Игнорировать тестовое приспособление
Методы всего прибора могут быть проигнорированы с помощью атрибута Ignore на уровне класса:
Очистка кеша теста
Если вы добавите атрибут Ignore в метод, вы можете заметить, что Visual Studio все еще выполняет тест. Необходимо очистить кэш теста для Visual Studio, чтобы получить изменения. Один из способов сделать это – очистить решение и восстановить его.
владелец
Используемый для отчетности, этот атрибут описывает лицо, ответственное за метод модульного тестирования.
DeploymentItem
Если модульные тесты выполняются в отдельной папке развертывания, этот атрибут можно использовать для указания файлов, которые требуются классу теста или методу теста для запуска. Вы можете указать файлы или папки для копирования в папку развертывания и при желании указать целевой путь относительно папки развертывания.
Описание
Используемый для отчетности, этот атрибут предоставляет описание метода теста. Как ни странно, этот атрибут доступен только в тестовых методах и недоступен в тестовых классах.
HostType
Для методов тестирования этот атрибут используется для указания хоста, на котором будет выполняться модульный тест.
приоритет
Этот атрибут не используется механизмом тестирования, но может быть использован, путем отражения, вашим собственным тестовым кодом. Полезность этого атрибута сомнительна.
Рабочий элемент
Если вы используете Team Foundation Server (TFS), вы можете использовать этот атрибут в методе тестирования, чтобы указать идентификатор рабочего элемента, назначенный TFS для конкретного модульного теста.
CssIteration / CssProjectStructure
Эти два атрибута используются во взаимосвязи с TeamBuild и TestManagementService и позволяют вам указать итерацию проекта, которой соответствует метод теста.
Параметризованное тестирование с атрибутом источника данных
Модуль модульного тестирования Microsoft поддерживает CSV, XML или источники данных базы данных для параметризованного тестирования. Это не совсем верно параметризованное тестирование (см., Как NUnit реализует параметризованное тестирование), потому что параметры не передаются методу модульного теста, а должны быть извлечены из источника данных и переданы тестируемому методу. Однако возможность загрузки тестовых данных в DataTable из различных источников полезна для автоматизации тестирования вождения.
CSV Источник данных
Текстовый файл с разделителями-запятыми может использоваться для источника данных:
и используется в методе испытаний:
Обратите внимание, что в окне результатов теста не отображаются параметры запуска (в отличие от NUnit):
Однако есть очевидные преимущества не отображать каждую тестовую комбинацию, особенно для больших наборов данных.
Читайте также: