Швы ссылки в.NET

Я просто недавно закончил книгу Michael Feathers, Работающую Эффективно с Унаследованным кодом. Это была замечательная книга по тому, как эффективно создать тестовые швы и использовать их для получения существующего кода под тестом.

Один из методов, о которых он говорит, использовал "швы ссылки". В основном идея состояла в том что, если у Вас был код, что в зависимости от другой библиотеки Вы могли использовать компоновщика для вставки другой библиотеки для тестирования, чем для производства. Это позволило бы Вам обнаруживать условия испытания через ложную библиотеку или стараться не звонить в библиотеки, которые имеют эффекты реального мира (базы данных, электронные письма, и т.д.), и т.д.

Пример, который он дал, был в C++. Мне любопытно, если эта техника (или что-то подобное) возможна в.NET / C#?

6
задан RationalGeek 24 March 2010 в 12:14
поделиться

2 ответа

Да, в .Net это возможно. В простейшем случае вы можете просто заменить сборку другой с таким же именем.

Для сборки со строгим именем следует изменить номер версии, а затем настроить привязки сборки, чтобы переопределить «связанную» версию во время компиляции. Это можно сделать на уровне предприятия, компьютера, пользователя или каталога.

Есть некоторые предостережения, связанные с безопасностью. Если сборка, которую вы хотите заменить, имеет строгое имя, вам нужно будет воссоздать тот же открытый ключ при подписании сборки.

Другими словами, если вы, как разработчик приложения, не хотите, чтобы ваши библиотеки «высмеивали» (или, возможно, заменяли вредоносным кодом), вы должны убедиться, что сборка подписана, а закрытый ключ не является общедоступным.

Вот почему вы не можете издеваться над DateTime - потому что Microsoft строго назвала основные библиотеки .Net.

4
ответ дан 17 December 2019 в 02:26
поделиться

Это немного похоже на то, что предлагает изолятор Typemock , в частности их заявленная способность вырывать и имитировать существующие типы . Но я никогда его не использовал; - (

Например, DateTime.Now - это то, над чем нельзя насмехаться, верно? alt text http: / /site.typemock.com/storage/feature-images/dateTime.png?__SQUARESPACE_CACHEVERSION=1252774490561

2
ответ дан 17 December 2019 в 02:26
поделиться
Другие вопросы по тегам:

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