Отладка Тестов Nunit в Экспрессе VS2010

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

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-консоль хорошо работает. Какова могла бы быть моя проблема?

9
задан ilivewithian 8 June 2010 в 18:34
поделиться

1 ответ

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

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

И на самом деле ошибка заключалась в невозможности найти файл 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 nunit. *. Dll) в отладку моих тестовых проектов каталог, и он работал нормально. (Выявление минимальных требуемых зависимостей должно быть тривиальным делом)

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

Ура!

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

6
ответ дан 4 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: