DevCon•12 // msdevcon.ru 23-24 мая, 2012 г. Microsoft #msdevcon Модульное тестирование в Visual Studio 11 ДМИТРИЙ АНДРЕЕВ Эксперт по разработке информационных систем Microsoft @dmandreev | [email protected] // DevCon•12 Юнит-тестирование в Visual Studio 11 ориентировано на разработчиков, которые пишут и запускают юнит-тесты во время создания кода. Анализ жалоб и пожеланий Использовать альтернативные системы юниттестирования Репутация MS-Test как медленной системы для .Net Отсутствие поддержки тестирования нативного кода MS-Test очень медленно развивается по сравнению с остальными (xUnit.net, BDD frameworks, mocking frameworks, и т.д.) Юнит-тестирование в Visual Studio оптимизировано для тестировщиков Плохо поддерживаются Agile и TDD Знакомство с новым обозревателем юнит-тестов Демонстрация #msdevcon Архитектура Сделано для разработчиков Используйте любую систему В комплекте поставляется: MS-Test для управляемого кода MS-Test для неуправляемого кода (**НОВОЕ**) Плагины сторонних разработчиков NUnit xUnit.net MbUnit Chutzpath – JavaScript тесты Юнит-тесты SQL Server Другие Напишите свой плагин! Customizing for Testing By Using the Visual Studio SDK Улучшения в MS-Test Производительность и масштабируемость Поддержка асинхронного запуска (Async) Нормальная поддержка 64-бит и .Net multitargeting Доступно в редакции Express! Асинхронные тесты [TestMethod] public async Task MyAsyncTest() { var result = await SomeLongRunningOperation(); Assert.IsTrue( result ); } Юнит-тестирование асинхронных методов в MSTest Демонстрация #msdevcon Строгая совместимость с VS 2010 Юнит-тест проекты VS 2010 будут «просто работать» в VS 11 Не нужно обновление Двустороння обратная совместимость с VS 2010 TeamBuild в TFS 11 настраивается Запуск тестов, совместимых с VS 2010 Запуск новых VS 11 тестов Изоляция для лучшего тестирования Новый VS 11 Fakes Framework Позволяет тестировать практически ВСЁ в изоляции На основе научно-исследовательской разработки “Moles” (проект Microsoft Research) Две концепции Заглушки (Stubs) – реализация интерфейсов или абстрактных классов Прослойки (Shims) – сгенерированные классы Перехват и подмена вызовов существующих объектов, включая .Net BCL! Использование fakes для изолированных юнит-тестов Демонстрация #msdevcon Рекомендации Заглушки Естественное расширение широко известных стратегий тестирования Основной способ для поддержки изоляции Прослойки Невообразимо мощный и иногда единственный способ протестировать… и огромное зло! Начинайте использовать для тестирования существующего кода Но не останавливайтесь на этом… Старайтесь сделать рефакторинг кода, чтобы прослойки больше не понадобились Затем уберите их Покрытие кода в VS 11 Анализ покрытия одним нажатием Анализ для выбранных тестов Как конкретные тесты покрывают систему Поддержка неуправляемого кода (через MS-Test Native Framework) Работает с системами тестирования сторонних производителей Покрытие кода Демонстрация #msdevcon Поддержка Team Build Если это работает в VS – будет работать и в Team Build Поддержка систем сторонних производителей Изоляция от Visual Studio Fakes Framework Покрытие кода Плюс… Оценка влияния на тесты (Test Impact Analysis) Непрерывное тестирование Запуск тестов это естественная часть сборки продукта Опция “Запустить тесты после сборки” запускает все тесты после каждой успешной сборки Непрерывное тестирование Демонстрация #msdevcon Юнит-тестирование в Visual Studio 11 ориентировано на разработчиков, которые пишут и запускают юнит-тесты во время создания кода. Юнит-тестирование в Visual Studio 11 ориентировано на разработчиков, которые пишут и запускают юнит-тесты во время создания кода. Новая версия Visual Studio! Доступна сегодня на: http://vs11.ru #msdevcon Полезные материалы Visual Studio Managed Unit Testing Framework (aka MS-Test) http://aka.ms/mstest-dev11 xUnit.net Информация: http://xunit.codeplex.com/ Скачать: http://aka.ms/xunit-vs11 NUnit Информация: http://nunit.org/ Скачать: http://aka.ms/nunit-vs11 MbUnit Информация: https://github.com/Gallio/Gallio-VS2011-Integration Скачать: http://aka.ms/mbunit-vs11 Пожалуйста Оцените доклад и мастерство докладчика. Форма для оценки находится в вашем инфопакете. © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.