Если вы только реализуете методы, то универсальный __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".
Я создал инструмент для непрерывной интеграции и ускорения общего Silverlight TDD ...
Теперь он полностью поддерживает любую версию NUnit скомпилирован для работы под Silverlight.
Ответом на данный момент, кажется, является проект Джеймса Кэнсдейла, посвященный проекту Silverlight Nunit:
http: / /weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx
This шаблон фантастический и именно то, что я искал. Это работает с Resharper тоже! Надеюсь, это сэкономит кому-то еще несколько часов.
Похоже на проблему с Silverlight 3. Можете ли вы получить исходники Moq.Silverlight и NUnitSilverlight и построить их на двоичных файлах silverlight 3? Похоже, они построены на SL 2.
Что мне помогло, так это убедиться, что свойство «Копировать локально» (в сетке свойств IDE (F4) эталонной системы) установлено в значение true.
Благодаря информации, предоставленной Ли, и ссылке, которую он предоставил (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:
Затем я изменил ссылки всех сборок Silverlight проекта (кроме 'mscorlib') на 'Copy Local: True", как описано в:
(http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx)
Затем я добавил ссылки на фреймворк Silverlight NUnit 2.5.1, представленный в следующем блоге (есть и другие версии, представленные Джеффом Уиллкоксом в блоге, который я упоминаю ниже, и Джейми Кансдейлом в его блоге выше, но это была последняя версия, которую я нашел):
Вот и все! После этого я мог писать свои тесты, запускать их в ReSharper и из тестового бегуна NUnit! Плюс я мог использовать ncover для получения отчетов о покрытии!!!
EDIT: Ах да, и если вы запустите какие-либо тесты, требующие использования потока UI, вы получите ошибку кросс-потока в ReSharper. Это решается выполнением этих тестов внутри вызова Deployment.Current.Dispatcher.BeginInvoke(...)
.
После использования unit для своих тестов я не смог запустить их из веб-интерфейса SL Test Framework, но для меня это не было слишком большой проблемой. Если вам нужно, чтобы это работало, посмотрите:
(http://www.jeff.wilcox.name/2009/01/nunit-and-silverlight/)
Я также попробовал StatLight (http://statlight.codeplex.com/) для запуска тестов из консоли, и это хорошо сработало, но я поклонник ReSharper и NUnit, поэтому для меня это был не лучший вариант. Также была странная ошибка со StatLight, когда он не загружал ресурсы моего тестового проекта должным образом, что приводило к некоторым сбоям в тестировании.
Надеюсь, это кому-нибудь поможет. Я не придумал здесь ничего нового, а просто консолидировал всю информацию, которую я хотел бы, чтобы кто-то обобщил для меня заранее. Когда у меня появится время, я напишу об этом в блоге с точки зрения создания проекта на фреймворке Habanero (http://www.habanerolabs.com) с SilverLight.
Фух. Вот и все, друзья!