Нужна помощь в переносе тестов nUnit в отдельный проект - PullRequest
2 голосов
/ 14 января 2009

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

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

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

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

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

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

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

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

Visual Studio 2005
.NET 2.0
nUnit 2.4.8 (версия .NET 2.0)

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

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

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

Ответы [ 4 ]

2 голосов
/ 14 января 2009

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

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

$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt)
0 голосов
/ 15 января 2009

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

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

0 голосов
/ 14 января 2009

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

0 голосов
/ 14 января 2009

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

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

...