Поблочное тестирование с Moq, Silverlight и NUnit

Если вы только реализуете методы, то универсальный __getattr__ может сделать трюк

class Wrapper: 
    def __init__(self, x): 
        self.x = x 
    def __getattr__(self, name): 
        def f(*args, **kwargs): 
            for y in self.x: 
                getattr(y, name)(*args, **kwargs) 
        return f

Например, с x = Wrapper([[], [], []]) после вызова x.append(12) все три объекта списка будут иметь 12 как последний элемент.

Обратите внимание, что возвращаемое значение всегда будет None ... опция могла бы собирать возвращаемые значения и возвращать их в виде списка, но это, конечно, "сломало бы API".

10
задан 27 December 2010 в 00:57
поделиться

5 ответов

Я создал инструмент для непрерывной интеграции и ускорения общего Silverlight TDD ...

http://www.StatLight.net

Теперь он полностью поддерживает любую версию NUnit скомпилирован для работы под Silverlight.

4
ответ дан 3 December 2019 в 20:06
поделиться

Ответом на данный момент, кажется, является проект Джеймса Кэнсдейла, посвященный проекту Silverlight Nunit:

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

This шаблон фантастический и именно то, что я искал. Это работает с Resharper тоже! Надеюсь, это сэкономит кому-то еще несколько часов.

5
ответ дан 3 December 2019 в 20:06
поделиться

Похоже на проблему с Silverlight 3. Можете ли вы получить исходники Moq.Silverlight и NUnitSilverlight и построить их на двоичных файлах silverlight 3? Похоже, они построены на SL 2.

0
ответ дан 3 December 2019 в 20:06
поделиться

Что мне помогло, так это убедиться, что свойство «Копировать локально» (в сетке свойств IDE (F4) эталонной системы) установлено в значение true.

1
ответ дан 3 December 2019 в 20:06
поделиться

Благодаря информации, предоставленной Ли, и ссылке, которую он предоставил (http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx) я смог заставить мои Silverlight NUnit тесты работать в Hudson с покрытием кода! Потрясающая вещь! И они также работают с ReSharper, так что я больше не чувствую, что меня наказывают (с 20-секундной задержкой) за выполнение TDD в Silverlight.

Итак, что именно я сделал?

  • Я создал проект Silverlight Unit Test Framework для SL3:

    (http://www.jeff.wilcox.name/2010/05/sl3-utf-bits/)

  • Затем я изменил ссылки всех сборок Silverlight проекта (кроме 'mscorlib') на 'Copy Local: True", как описано в:

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

  • Затем я добавил ссылки на фреймворк Silverlight NUnit 2.5.1, представленный в следующем блоге (есть и другие версии, представленные Джеффом Уиллкоксом в блоге, который я упоминаю ниже, и Джейми Кансдейлом в его блоге выше, но это была последняя версия, которую я нашел):

    (http://wesmcclure.tumblr.com/post/152727000)

  • Вот и все! После этого я мог писать свои тесты, запускать их в ReSharper и из тестового бегуна NUnit! Плюс я мог использовать ncover для получения отчетов о покрытии!!!

  • EDIT: Ах да, и если вы запустите какие-либо тесты, требующие использования потока UI, вы получите ошибку кросс-потока в ReSharper. Это решается выполнением этих тестов внутри вызова Deployment.Current.Dispatcher.BeginInvoke(...).

  • После использования unit для своих тестов я не смог запустить их из веб-интерфейса SL Test Framework, но для меня это не было слишком большой проблемой. Если вам нужно, чтобы это работало, посмотрите:

    (http://www.jeff.wilcox.name/2009/01/nunit-and-silverlight/)

  • PS: Я также создал проект NUnit для консольного бегуна NUnit, чтобы запускать тесты из консоли NUnit (не пытайтесь включить ваши сборки тестов, не относящиеся к SL, в тот же проект NUnit, это не сработает, поскольку они используют другую библиотеку nunit.framework).

Я также попробовал StatLight (http://statlight.codeplex.com/) для запуска тестов из консоли, и это хорошо сработало, но я поклонник ReSharper и NUnit, поэтому для меня это был не лучший вариант. Также была странная ошибка со StatLight, когда он не загружал ресурсы моего тестового проекта должным образом, что приводило к некоторым сбоям в тестировании.

Надеюсь, это кому-нибудь поможет. Я не придумал здесь ничего нового, а просто консолидировал всю информацию, которую я хотел бы, чтобы кто-то обобщил для меня заранее. Когда у меня появится время, я напишу об этом в блоге с точки зрения создания проекта на фреймворке Habanero (http://www.habanerolabs.com) с SilverLight.

Фух. Вот и все, друзья!

9
ответ дан 3 December 2019 в 20:06
поделиться
Другие вопросы по тегам:

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