Отладка тестов Nunit внутри VS2010 Express - PullRequest
9 голосов
/ 08 июня 2010

Я написал кучу модульных тестов в VS2010 Express, и тесты были тестами, иногда они терпели неудачу. Поскольку экспресс-версии VS не позволяют запускать плагины, я не могу просто раскрутить TestDriven.Net или его эквивалент и отладить тесты. Чтобы попытаться обойти это, я преобразовал мою тестовую сборку в консольное приложение и сделал основной метод похожим на это:

class CrappyHackToDebugUnitTestInVSExpress
{
  public static void Main()
  {
     AppDomain.CurrentDomain.ExecuteAssemblyByName(
          @"C:\Program Files\NUnit 2.5.5\bin\net-2.0\nunit-console.exe",
          new [] { Assembly.GetExecutingAssembly().Location, "/framework:4.0" });
  }
}

Теоретически я должен быть в состоянии выполнить это, установить точки останова в моем тесте. Если это сработает, это будет приемлемым решением, но я продолжаю получать следующее:

FileLoadException
Could not load file or assembly 'C:\\Program Files\\NUnit 2.5.5\\bin\\net-2.0\\nunit-console.exe' 
or one of its dependencies. The given assembly name or codebase was invalid. 
(Exception from HRESULT: 0x80131047)

Теперь файл существует, и при запуске вручную nunit-console работает нормально. В чем может быть моя проблема?

Ответы [ 3 ]

7 голосов
/ 22 сентября 2010

В основном вам нужно преобразовать вашу сборку в приложение Windows Forms, добавить ссылку на сборку nunit-gui-runner.dll и изменить метод Main так, чтобы он выглядел следующим образом:

    [STAThread]
    static void Main()
    {
        NUnit.Gui.AppEntry.Main(new string[] { Assembly.GetExecutingAssembly().Location });
    }

вот еще один пример:

...
using NUnit.Gui;

namespace __libs
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            NUnit.Gui.AppEntry.Main(new string[] { @"C:\test\bin\Debug\test.exe" });
        }
    }
}

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

6 голосов
/ 03 августа 2010

Я играл с вашей концепцией, и кажется, что проблема не в загрузке файла, а в зависимости.

Я использовал следующий модифицированный код:

И ошибка была на самом делеНе удалось найти файл nunit.core.dll, который находится в каталоге / lib.

 try
        {
            String NUnitPath = @"C:\Program Files\NUnit 2.5.7\bin\net-2.0\nunit-console.exe";

            AssemblyName asmName = System.Reflection.AssemblyName.GetAssemblyName(NUnitPath);

            AppDomain.CurrentDomain.ExecuteAssemblyByName(asmName, new[] { Assembly.GetExecutingAssembly().Location, "/framework:4.0" });

        }
        catch (Exception ex)
        {
            Trace.WriteLine(ex.Message);
            Trace.WriteLine(ex.StackTrace);
        }

(мне нравится получать System.Reflection.AssemblyName, потому что вы можете проверить и увидеть, что все в порядке, соответствует пути к необработанному файлу.)

Быстрое массовое копирование (моноблок xcopy. *.dll) в каталог отладки моих тестовых проектов, и он работал нормально.(Обнаружение минимальных необходимых зависимостей должно быть тривиальным)

Протестировано в VC # 2010 Express с NUnit 2.5.7 (точки останова работают, но я не играл ни с какими другими опциями.) Хотя яконечно, вы можете сделать из него сносный вариант сборки.

Cheers!

PS - Первый пост здесь, так что я немного не опробован относительно форматирования блоков кода.Извините заранее ..

2 голосов
/ 14 июня 2012

У меня была похожая проблема при попытке отладки модульных тестов в VS C # express. Трудно было заставить его работать должным образом, но потом я узнал об этом шаблоне проекта. Отлично работает в C # Express!

http://visualstudiogallery.msdn.microsoft.com/b8a7a8fa-9f5a-4b9b-8e8b-8839a4364f26?SRC=VSIDE

Шаблон проекта C #

Интегрированные тесты с Visual Studio, включая Visual C # Express версия

Автономный консольный бегун NUnit. Разрешить писать контрольные приборы и тест, запущенный из Visual Studio простым нажатием клавиши F5 (поддержка теста отладка), или Ctrl-F5 бесплатный запуск с результатами в окне консоли. В случай сбоя теста обозначается звуковым сигналом.

Содержит необходимые модули NUnit для запуска тестового проекта. Нет внешнего зависимостей. Просто создайте новый проект, используя NUnit Test Application шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...