Кто-нибудь заставил родинки работать правильно? - PullRequest
2 голосов
/ 10 июля 2011

Я пытался найти непротиворечивое описание того, как использовать среду изоляции родинок, но не нашел много по этой теме. Пока я сделал следующее:

  1. Скачать родинки с здесь (версия x86).
  2. Установите его.
  3. Здесь парень описывает, как использовать его с пользовательской библиотекой. Поэтому я добавил сборку родинок для своей библиотеки. После перестройки сборка появилась в ссылках.
  4. Затем я попытался добавить использование пространства имен .Moles и построить проект, но он потерпел неудачу с кучей ошибок. Пример с MDateTime тоже не сработал. У MDateTime просто не было никакого метода.
  5. Учитывая, что это была 5-я неудачная попытка заставить его работать, я удалил его из системы.

Итак, вопрос: родинки вообще ни у кого не работают? Если да, как ты туда попал? Должен ли я также установить pex, чтобы он работал? Что если я захочу использовать его на сервере сборки из сценария msbuild? Я видел, что они упомянули поддержку msbuild, но есть ли у кого-нибудь реальный опыт использования его из msbuild?

Для меня это выглядит очень сыро, чтобы использоваться в серьезном процессе разработки. Может быть, у кого-то другое мнение?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 22 июля 2011

Да, работает нормально. Я полагаю, вы устанавливаете v0.94.51023.0. Чтобы Moles функционировал правильно, вы должны сделать несколько вещей, чтобы настроить тестовый класс. Они быстро становятся второй натурой - не волнуйтесь!

  1. Вы должны создать "moled Assembly", для каждой сборки, против которой вы хотите использовать Moles:

    а. Щелкните правой кнопкой мыши сборку в узле «Ссылки» обозревателя решений и выберите «Добавить сборку родинок». б. Если вы хотите выполнить сборку сборки .NET Framework, щелкните правой кнопкой мыши узел References и выберите «Добавить сборку Moles для mscorlib».

  2. Ссылка на сборку Microsoft.Moles.Framework в файле .CS:

    с использованием Microsoft.Moles.Framework;

  3. Сборка проекта. Это приводит к добавлению в проект соответствующих ссылок инфраструктуры Moles. Как прокомментировала @Lara, шаг 3 завершится неудачно, без добавления ссылок.

  4. Ссылочные смоделированные сборки в файле .CS:

    с использованием MyNamespace.Moles;

  5. Украсить методы тестирования, использующие типы Moled, с помощью атрибута [HostType ("Moles"]

    [HostType ( "Кроты")]

  6. Определите либо всю сборку, либо отдельные типы, которые используются в файле .CS, с помощью атрибутов сборки:

    с использованием MyNameSpace.MyAssemblyName.Moles;

    [сборка: MoledAssemblyType ("MyNameSpace.MyAssemblyName")]

    [сборка: MoledType (typeof (MyNameSpace.MyAssemblyName.MyClass))]

Когда тестовый проект компилируется, Moles копирует "moled" сборки, а затем вводит обходные пути в копию. К пространству имен смоделированных сборок и типов добавляется ".Moles". Поэтому «MyNameSpace.MyAssembly» становится «MyNameSpace.MyAssembly.Moles». Я уверен, что вы также знакомы с префиксами "S" и "M" к именам типов смоделированных сборок. Если нет, обратитесь к Справочному руководству Кротов .

0 голосов
/ 20 июля 2011

Это работает вполне нормально для меня, и я только что попробовал это с MDateTime.Просто убедитесь, что вы используете правильное пространство имен при использовании или используете System.Moles.MDateTime непосредственно в своем коде.Затем Intellisense должен предоставить вам все методы и свойства, чтобы настроить его по своему усмотрению.

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

Для некоторых классов (сейчас я не совсем уверен, может быть, тех, которые не являются частью mscorlib?) Мне также пришлось добавить

[assembly: MoledType( typeof( HttpContext ) )]

в начало моего блокатестовый класс (над пространством имен), а также

[HostType( "Moles" )]

в качестве атрибута моих методов тестирования, но это не обязательно для MDateTime.

Вы загрузили самую последнюю версию, а также обновилиВаш VS2010 до последней версии SP?

Надеюсь, что это поможет ...

G.

...