VS 2010 Ошибка генерации юнит-тестов - PullRequest
12 голосов
/ 29 июля 2010

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

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

Ошибка генерации модульного теста: обнаружена следующая ошибкапри чтении модуля «xx.Core»: не удалось разрешить ссылку на тип: [System.Web, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = xxxxxxxxxxxx] System.Web.Routing.RouteValueDictionary

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

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

Ответы [ 3 ]

1 голос
/ 07 декабря 2011

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

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

1 голос
/ 25 июля 2012

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

0 голосов
/ 06 апреля 2011

Используете ли вы NUNIT для модульного тестирования?Если это так, по умолчанию 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 на правильные числа, которые вы записали ]

ипри добавлении:

<loadFromRemoteSources enabled="true" />

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

...