Как получить покрытие кода при тестировании Silverlight

Можно удалить модель в Папке приложения, если Вы видите эту ошибку (Модель Уже Существует!)

вводят описание изображения здесь

15
задан 5 September 2009 в 17:59
поделиться

5 ответов

К сожалению, из-за прозрачной модели безопасности (т. Е. Все приложения изолированы) в среде выполнения Silverlight это непростая задача. Традиционный инструментарий покрытия кода .NET изменяет базовую сборку, вставляя вызовы P / Invoke в инструменты сбора покрытия.

В результате такие инструменты, как инструментальный инструмент покрытия кода Visual Studio 2008, не работают с Silverlight.

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

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

Извините, что я не знаю ответа для вас сегодня.

6
ответ дан 1 December 2019 в 04:58
поделиться

Я спросил об этом у службы поддержки NCover.

Мой вопрос был:

Допустим, я создаю класс silverlight библиотека (Проект -> Новый проект ...) из Visual Studio. В этом классе библиотека у меня несколько классов и я используйте шаблон NUnit silverlight для проект, содержащий модульные тесты для моя библиотека классов silverlight:

http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx

Я прекрасно могу запускать модульные тесты (даже на сервере сборки мы используя msbuild и TFS), но я не могу получить данные о покрытии кода для них, используя стандартные варианты покрытия кода которые доступны в Visual Studio.

Может ли NCover показать покрытие кода для мои библиотеки классов Silverlight?

Ответ, который я получил:

Пока вы тестируете библиотеки классов с помощью NUnit, вы сможете охватить их с помощью NCover. Если вы протестируете их через веб-браузер с помощью такого инструмента, как Selenium, тогда вы не сможете получить покрытие.

Теперь мне интересно, пытался ли кто-нибудь из команды silverlight использовать NCover + NUnit? Конечно, у MS есть своя собственная структура модульного тестирования, так что в «бизнес-смысле» это выглядело бы не так хорошо :) Но как насчет того, чтобы просто проверить, работает ли это.

0
ответ дан 1 December 2019 в 04:58
поделиться

Согласно NCover FAQ он может охватывать silverlight:

[ http://docs.ncover.com/ref/3-0/frequent-asked-questions/#q05] [1]

Пока я не нашел никакой информации, действительно ли это работает, например, для библиотек классов silverlight. Странно, что если ncover работает, то о нем нет информации (посты в блогах и т.д.). Все ли используют путь «Создать стандартную библиотеку .NET и связать файлы с ней для получения данных о покрытии» при тестировании кода Silverlight?

Когда дело доходит до других решений (даже коммерческих), мой поиск в Google не дал никаких результатов.

0
ответ дан 1 December 2019 в 04:58
поделиться

Ответ на данный момент - нет (если Джефф Уилкокс говорит «нет», то нет ;-)).

Я попросил NCover поддержать этот вопрос некоторое время назад ( об их FAQ re Silverlight ):

... Я использую Silverlight 2.0 и, как мне кажется, он может работать только в браузере. Так вы говорите о SL3 или я что-то пропустил?

Я полагаю, что SL3 скоро будет RTM-версия. Если я обновлюсь, сможет ли мое приложение выйти из браузера (и, следовательно, использовать NCover) автоматически, или мне придется для этого изменить его?

И вот ответ, который я получил:

FAQ является точным в своем нынешнем виде, однако формулировка несколько сбивает его с толку. Под темой часто задаваемых вопросов подразумевается, что NCover не поддерживает закрывающий код Silverlight (v1, v2 или v3) при использовании аргумента // iis, потому что тогда он работает на собственной среде CLR.

Однако, код программной части и поддерживающие классы приложения Silverlight (v1 или v2 или v3) действительны для C # / VB, поэтому вы можете писать модульные тесты для этой части приложения и запускать эти тесты с помощью NUnit / MSTest / Gallio / xUnit / и т. д. и вы получите покрытие этой части.

Мы еще не исследовали, может ли NCover собирать данные о Silverlight v3, когда он выполняется вне браузера, но я полагаю, что мы не сможем этого сделать. Однако как только мы узнаем наверняка, мы отметим это в документации.

Я понял, что это означает, что на самом деле приложения Silverlight не поддерживаются - вы должны «Создать стандартную библиотеку .NET и связать файлы с ней, чтобы получить данные о покрытии ».

так что вы можете написать модульные тесты для этой части приложения и запустить эти тесты с помощью NUnit / MSTest / Gallio / xUnit / и т. д., и вы получите покрытие этой части.

Мы еще не исследовали, может ли NCover собрать покрытие на Silverlight v3, когда он запускается вне браузера, но я думаю, что мы не сможем этого сделать. Однако как только мы узнаем наверняка, мы отметим это в документации.

Я понял, что это означает, что на самом деле приложения Silverlight не поддерживаются - вы должны «Создать стандартную библиотеку .NET и связать файлы с ней, чтобы получить данные о покрытии ».

так что вы можете написать модульные тесты для этой части приложения и запустить эти тесты с помощью NUnit / MSTest / Gallio / xUnit / и т. д., и вы получите покрытие этой части.

Мы еще не исследовали, может ли NCover собрать покрытие на Silverlight v3, когда он запускается вне браузера, но я думаю, что мы не сможем этого сделать. Однако как только мы узнаем наверняка, мы отметим это в документации.

Я понял, что это означает, что на самом деле приложения Silverlight не поддерживаются - вы должны «Создать стандартную библиотеку .NET и связать файлы с ней, чтобы получить данные о покрытии ».

1
ответ дан 1 December 2019 в 04:58
поделиться

Чтобы получить результаты покрытия кода, выполните следующую процедуру:

-Добавьте новый тестовый проект в решение
-Удалите все существующие классы (тест базы данных, заказанный тест и т. Д.), Чтобы остался только класс модульного теста (UnitTest1).
-Удалите все бесполезные комментарии и грубый код из тестового класса, чтобы у вас остался только тестовый метод (без комментариев, даже без TestContext)
-Добавьте ссылку на версии Silverlight «System.dll», «System.Windows.dll» в тестовый проект. (обычно находится в папке «C: \ Program Files \ Microsoft SDKs \ Silverlight \ v2.0 \ Reference Assemblies \» (удалите существующую ссылку на system.dll, если вам нужно сначала)
-Добавить ссылку на тестируемый проект
-Теперь вы можете писать тесты для объектной модели (стандартные классы)

Ура,

Ссылка: http://weblogs.asp.net/rosherove/archive/2008/12/27/unit-testing -in-silverlight-land-with-typemock-isolator.aspx

2
ответ дан 1 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: