Вопрос

Все работает нормально, когда класс модульных тестов является частью основного проекта (TestAccount).

В каждой статье о модульном тестировании, которую я читал, рекомендуется помещать тесты в отдельный проект, поэтому я...

  • добавил еще один проект (testaccount.unittests) в решение
  • перемещен класс модульных тестов (AccountTests.vb) в TestAccount.UnitTests.
  • и добавил ссылку в TestAccount.UnitTests на TestAccount (скопируйте local = true)

Решение компилируется без каких-либо предупреждений.Однако nUnit не может получить доступ к основному проекту и выдает следующую ошибку для каждого теста:

System.IO.FileNotFoundException:Не удалось загрузить файл или сборку «TestAccount, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null» или одну из его зависимостей.Система не может найти указанный файл.

Что я делаю не так?

(У меня были аналогичные проблемы с nunit.framework.dll, пока я не добавил его в GAC)

снимок экрана Solution Explorer http://img440.imageshack.us/img440/4862/nunitsolutionexploreree3.jpg

Визуальная Студия 2005
.NET 2.0
nUnit 2.4.8 (версия .NET 2.0)

[Изменить] Эта проблема возникает только при запуске nUnit из Visual Studio (в качестве внешней команды).Если я загружаю консоль nUnit самостоятельно, она работает нормально.

[Редактировать] Омар:да, у меня есть ссылка на другой проект.Вот скриншот моего обозревателя решений

Я думаю, мне, возможно, придется запустить консоль nUnit отдельно (вместо внешних инструментов VS).

Это было полезно?

Решение

Я нашел отчет об ошибке это говорит о том, что Visual Studio неправильно расширяет макросы TargetPath и TargetDir.Они расширяются до каталога obj\, а не bin\.

[Обновление] Проблема/решение фактически обсуждается в Поддержка Visual Studio раздел документации.Поскольку макросы Target указывают на obj\, вы не можете использовать их по умолчанию.В итоге я использовал следующее выражение в поле «Аргументы»:

$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt)

Другие советы

Это может показаться глупым, но я хочу сказать очевидное: дали ли вы своему тестовому проекту ссылку на другой проект?

Другие проблемы, типичные для такого рода проблем, — это использование внутренних классов, к которым невозможно получить доступ из другого проекта/пространства имен.

Также убедитесь, что путь вывода сборки соответствует тому, что настроено в вашей конфигурации NUnit.У меня такая же настройка, но мне не нужно устанавливать «copy local = true».

Проблема в том, что он не находит само приложение или одну из зависимостей приложения?Вы можете попробовать использовать FileMon или Fusion Log Viewer, чтобы узнать, что именно не работает.Возможно, проблема не в поиске самого приложения, а в поиске другой зависимости.Убедитесь, что для всех зависимостей для параметра Copy Local установлено значение True.

Как именно вы запускаете графический интерфейс NUnit в VisualStudio?Если вы устанавливаете «Запустить внешнюю программу» в свойствах проекта, это дает вам возможность указать рабочий каталог.Возможно, вам придется изменить это место на место сборки вашей тестовой библиотеки DLL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top