Подтвердить что ты не робот

VS 2010 Ошибка, генерирующая модульные тесты

У меня есть одна .NET 4 DLL, для которой у меня возникают проблемы при создании модульных тестов. Я использую VS 2010 Standard. Каждый другой проект в решении будет генерировать unit test заглушки для классов просто отлично. Для других сборок я могу перейти к существующему коду, щелкнуть правой кнопкой мыши имя класса и выбрать "Создать модульные тесты". Я получаю окно выбора, которое следует просто отлично.

Одна сборка, которая мне действительно нужна для покрытия, не будет генерировать тестовые заглушки, используя ту же самую методологию, о которой говорилось выше. Я перехожу к классу в проекте/сборке, щелкаю правой кнопкой мыши, выбираю "Generate Unit Tests", и меня встречает следующая ошибка:

Unit Test Ошибка генерации. При чтении модуля "xx.Core" возникла следующая ошибка: "Не удалось разрешить ссылку на тип: [System.Web, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = xxxxxxxxxxxx] System. Web.Routing.RouteValueDictionary

Насколько я могу судить, прямых ссылок в проекте нет в версии 2.0 System.Web, упомянутой в сообщении об ошибке. Поиск в каталоге, который содержит файлы проекта и .CS с помощью инструмента grepWIN, чтобы увидеть, существует ли текст для этой ссылки в любых файлах, дает нулевые результаты. Можно ли одновременно ссылаться на версию 2.0 и 4.0 версии system.web, и если да, то зачем вам это делать?

Любые идеи о том, как избавиться от этого сообщения об ошибке, чтобы я мог правильно пропустить некоторые модульные тесты?

4b9b3361

Ответ 1

У меня была та же проблема с ObservableCollection.

Мое "решение" состояло в том, чтобы обновить все проекты, на которые имеются ссылки, и связанные с ними проекты на .NET 4.0. Затем это сработало... Однако это кажется немного странным, и я мог бы сделать что-то еще, из-за чего проблема исчезла.

Ответ 2

Недавно у меня была аналогичная проблема с одним из моих проектов. Проблема заключалась в том, что после того, как я построил свою библиотеку, я переименовал DLL файл. Мой проект, ссылающийся на dll, все еще был построен отлично, однако я получил аналогичную ошибку при генерации модульных тестов, пока я не переименовал dll обратно в исходное имя, когда оно было построено.

Ответ 3

Используете ли вы NUNIT для unit test? Если это так, по умолчанию Nunit указывает на .Net 2.0. Вам необходимо внести соответствующие изменения в файл nunit.exe.config.

Не могли бы вы в Проводнике Windows перейти к C:\WINDOWS\Microsoft.NET\Framework. Там вы увидите несколько папок с именами такого рода: v1.0.xxxxx, v1.1.xxxxx,..., v4.0.xxxxx. Запишите точное имя папки v4.0.xxxxx.

С помощью текстового редактора откройте файл nunit.exe.config, который находится в этой папке: C:\Program Files\NUnit 2.5.2\bin\net-2.0.

В добавлении:

<startup>  <requiredRuntime version="v4.0.xxxxx" />  </startup>

[заменить xxxxx на правильные номера, которые вы записали]

и в разделе add:

<loadFromRemoteSources enabled="true" />

Вышеуказанное изменение сработало для меня. Надеюсь, для других людей, столкнувшихся с этой проблемой.