Моя платформа: Visual C# 2008 Express Edition с NUnit 2.2.7
У меня есть решение с моим кодом в одном проекте и моими модульными тестами NUnit в другом проекте в том же решении.
Я изо всех сил пытался отладить и пройти тесты NUnit за один шаг. Я нашел в Интернете ссылки, в которых предлагалось вызвать по следующему адресу:
NUnit.ConsoleRunner.Runner.Main(args);
Но это даже не компилируется - есть ошибка компилятора:
Error 1 The type or namespace name 'Runner' does not exist in the namespace 'NUnit.ConsoleRunner' (are you missing an assembly reference?)
Я добавил все ссылки на сборку, которые смог найти, но безрезультатно.
Наконец, это то, что я собрал вместе, и это работает, но, возможно, вы, хорошие читатели, могли бы предложить лучшее решение:
1) В моем тестовом проекте имя класса тестового примера, который я хочу отлаживать, - MyTestClass. Он имеет метод [TestFixtureSetUp] с именем Init (), а фактический тестовый пример находится в функции [Test] MyTest ().
2) В моем проекте кода у меня есть консольная программа TestProgram.cs, которая компилируется в EXE.
В TestProgram.cs я вызываю тестовые примеры следующим образом
// First instantiate the test class
MyTestClass tc = new MyTestClass();
// Call the TestFixtureSetup method
tc.Init();
// Now call the actual test
tc.MyTest();
Это работает, и я могу выполнять отладку и выполнять отдельные этапы тестирования.
Если у кого-то есть лучшие предложения по использованию Visual Studio 2008 Express без оплаты дополнительных плагинов, я ценю ваш совет.





В моем магазине мы делаем это точно так же, как и вы. С другой стороны, это означает, что настройка может быть не такой, как в NUnit. С другой стороны, это довольно просто сделать и позволяет создать минимальную среду для воспроизведения ошибки.
Поскольку вы используете экспресс-версию Visual Studio, вы не можете использовать бесплатную надстройку TestDriven.NET. Это прискорбно, потому что это действительно лучший инструмент, который я использовал для отладки модульных тестов.
Класс Runner можно найти в сборке nunit-console-runner.dll, поэтому обязательно добавьте ссылку на него. Я не уверен, что он делает что-то, чего нет в вашей простой точке входа, но, вероятно, лучше всего использовать его в целях безопасности и для будущей совместимости.
Еще один (грязный) вариант, о котором стоит упомянуть, - это запуск вашего модульного теста Debugger.Attach(). Я не пробовал это с экспресс-установкой, но вам должно быть предложено подключить отладчик при запуске модульного теста. Затем вы можете выбрать существующий экземпляр VS и отладить его.
Вы использовали средство запуска тестов ReSharper? Я считаю, что это намного лучше, чем TestDriven.NET - хотя, конечно, это не бесплатно.
Привет, Джон, да, я согласен, это хороший бегун. Однако я не являюсь поклонником ReSharper из-за его требований к ресурсам. Я пробовал это в течение значительного периода времени (> 3 месяцев) и обнаружил, что это причиняет мне много боли.
I found some references online that suggested calling the following:
NUnit.ConsoleRunner.Runner.Main(args);But this doesn't even compile - it has the compiler error:
JFYI Вам нужно добавить ссылку .NET DLL на сборку монахиня-консольный бегун в пакете NUnit DLL (у меня 2.2.4.0) Похоже, что класс тоже был переименован, но он есть, если вам это нужно.
NUnit.ConsoleRunner.ConsoleUi.Main(args);
Джон как хороший способ, но не более автоматический;)
Вот что у меня уже говорят на ТАК:
Вы можете создать пустой проект (например, выбрать консольное приложение) и в свойстве проекта выбрать тег DEBUG и выбрать Start External Program. Ставьте путь Нунит. Затем в опции запуска аргументы командной строки выбирают DLL, которая содержит весь ваш тест (мой всегда находится в nunit \ bin ...). Затем выберите Enable unmanaged code debugging, и вы сможете запустить проект внутри VS и даже пошагово использовать отладчик.
Таким образом, вам не понадобится макрос или что-либо, что нужно делать каждый раз, это просто обычный F5 :)
Вам вообще нужен отдельный проект? Разве вы не можете просто установить эти параметры в своем проекте модульного тестирования?
Кент прав. (Если, конечно, Express Edition не позволяет запускать внешнюю программу при нажатии F5)
В Visual C# 2010 Express нельзя использовать «Запуск внешней программы». Из msdn.microsoft.com/en-us/library/68c8335t.aspx «Выпуски Express, такие как Microsoft Visual C# Express, не поддерживают изменение свойства StartAction; это поддерживается только в полной версии продукта Visual Studio».
Взгляните на http://nunit.com/blogs/?p=28
Это работает.
Спасибо BlackWasp. Эта ссылка решает проблему с платными выпусками, имеющими опцию «Начать внешнюю программу», а в экспресс-выпусках - нет.
кто-нибудь может восстановить эту веб-страницу? Я бы очень хотел прочитать это, но URL-адрес стал недействительным ...
Если у вас установлен ReSharper, он должен уметь обнаруживать ваши [Test] фикстуры и помещать значок слева от каждого метода, который нужно запустить, и слева от каждого тестового инструмента, чтобы запустить все. Я предпочитаю этот способ.
У большинства людей на работе также есть TestDriven.NET, которого по какой-то причине нет на моей машине, поэтому им интересно, что происходит. Это забавно.
Как правило, вам действительно не нужно использовать отладчик, если вы делаете это правильно и небольшими шагами. Но вы можете оказаться в другой ситуации ..