Как запустить NUnit в режиме отладки из Visual Studio?
Я недавно строил тестовую платформу для немного C#, над которой я работал. У меня есть настроенный NUnit и новый проект в моей рабочей области для тестирования компонента. Все работает хорошо, если я загружаю свои модульные тесты из Nunit (v2.4), но я дошел до того, что было бы действительно полезно запустить в режиме отладки и установить некоторые точки останова.
Я пробовал предложения из нескольких руководств, которые все предлагают изменить свойства "отладки" теста проект:
Start external program: C:Program FilesNUnit 2.4.8binnunit-console.exe
Command line arguments: /assembly: <full-path-to-solution>TestDSPbinDebugTestDSP.dll
Я использую консольную версию там, но попробовал вызвать графический интерфейс. Оба дают мне ту же ошибку, когда я пытаюсь запустить отладку:
Cannot start test project 'TestDSP' because the project does not contain any tests.
это потому, что я обычно загружаю DSP.nunit в графическом интерфейсе Nunit, и именно там проводятся тесты?
Я начинаю думать, что проблема может быть в том, что VS хочет запустить свою собственную тестовую структуру, и именно поэтому он не может найти NUnit тесты?
Edit: для тех, кто спрашивает о тестовых светильниках, один из моих .cs файлы в проекте TestDSP выглядят примерно так:
namespace Some.TestNamespace
{
// Testing framework includes
using NUnit.Framework;
[TestFixture]
public class FirFilterTest
{
[Test]
public void Test01_ConstructorTest()
{
...some tests...
}
}
}
...Я довольно новичок в C# и тестовой платформе NUnit, поэтому вполне возможно, что я пропустил какой-то важный бит информации; -)
Окончательное Решение: большой проблемой был проект, который я использовал. Если вы выберете Other Languages -> Visual C# -> Test -> Test Project ...при выборе типа проекта Visual Studio попытается использовать его собственный фреймворк тестирования, насколько я могу судить. Вы должны выбрать нормальный проект библиотеки классов C#, а затем инструкции в моем выбранном ответе будут работать.
19 ответов:
Я использую ту же технику, что и вы пытаетесь Jon, без флага / assembly, т. е.
Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"Делает TestDSP.dll содержит все ваши TestFixtures?
поскольку мой тестовый проект не является стартовым проектом в решении, я запускаю свои тесты, щелкнув правой кнопкой мыши на тестовом проекте и выбрав Debug --> Start New Instance
когда мне нужно отладить мои тесты NUnit, я просто прикрепляю к приложению NUnit GUI
nunit-agent.exeс помощью "Debug / Attach to Process"и запустить тесты из графического интерфейса. Любые точки останова в моих тестах (или код, который они тестируют) поражены. Я неправильно понял ваш вопрос, или это сработает для вас?
просто удалите строку, которая выглядит как
<ProjectTypeGuids> {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} </ProjectTypeGuids>из файла проекта. Эта строка в основном говорит VS.Net что это тестовый проект, поэтому "не удается запустить тестовый проект". К вашему сведению здесь в 1-й GUID, который говорит "Это тест", 2-й говорит: "это на C#". Для получения информации об этих GUID:http://www.mztools.com/Articles/2008/MZ2008017.aspx
в дополнение к ответу, предоставленному @Justin вот еще несколько деталей для NUnit 2.6.
С помощью NUnit 2.6 прикрепить к nunit.exe или nunit-консоль.exe а не агент. Конфигурация, отмеченная @Justin, немного отличается. Ниже приведен пример из нанит.исполняемый.config (то же самое для NUnit-консоли.исполняемый.конфигурация.)
<startup useLegacyV2RuntimeActivationPolicy="true"> <!-- Comment out the next line to force use of .NET 4.0 --> <supportedRuntime version="v2.0.50727" /> <supportedRuntime version="v4.0.30319" /> </startup>для тестового проекта .NET 4, чтобы получить точки останова, вам нужно будет закомментировать или удалить строку v2.0, как предлагает комментарий. Однажды я это сделал что я был в состоянии отладки .Чистый тестовый проект 4.0.
если вы используете NUnit 2.4 или новее, вы можете поместить следующий код в свой
SetUpFixtureкласса. (Вы можете сделать это с более старыми версиями, но вам нужно будет сделать любой эквивалент, который имеетSetUpFixture, или скопируйте его в сам тест.)[SetUpFixture] public class SetupFixtureClass { [SetUp] public void StartTesting() { System.Diagnostics.Debugger.Launch(); } }что
Debugger.Launch()does вызывает следующее диалоговое окно, чтобы показать, когда вы нажимаете кнопку Запустить внутри NUnit.
затем вы выбираете запущенный экземпляр visual studio с помощью ваш проект открыт (второй на моем скриншоте), затем отладчик будет прикреплен, и любые точки останова или исключения появятся в Visual Studio.
установить TestDriven.NET, который является плагином для Visual Studio
оттуда вы можете щелкнуть правой кнопкой мыши на сборке модульного теста и нажать кнопку выполнить тесты, чтобы запустить весь набор, щелкните правой кнопкой мыши на классе TestFixture, чтобы запустить только тесты в этом классе, или щелкните правой кнопкой мыши на методе теста, чтобы запустить только этот метод.
У вас также есть возможность протестировать с помощью отладчика, если вам нужно установить точку останова в тестах в режиме отладки.
Try NUnitit-добавление Visual Studio с открытым исходным кодом для отладки тестовых случаев NUnit
Домашняя страница http://nunitit.codeplex.com/
Если вы можете заставить консоль / или графический интерфейс работать, но ваши точки останова не попадают, это может быть связано с тем, что ваше приложение работает в другой среде выполнения .NET, чем NUnit. Проверьте, если ваш nunit-консоль.исполняемый.config / nunit.исполняемый.в конфигурации указано время выполнения.(Конфигурации живут в том же каталоге, что и NUnit exe.) укажите время выполнения с помощью узла запуска:
<configuration> <startup> <supportedRuntime version="4.0" /> </startup>
Если путь проекта содержит пробелы, например, "новый проект" в path
<path>\bin\Debug\New Project\Quotes.Domain.Tests.dllзатем заключите параметр Start -- > аргументы командной строки путь к проекту в двойные кавычки.Я потратил много времени, чтобы выяснить это.
теперь с картинками:
- запустите NUnit gui (скачать 2.6.2 отсюда) затем перейдите к
File -> Open Project
выберите ваш тест
.dllиз папки bin (C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll)перейти в Visual Studio
Debug -> Attach to process(откроется окно прикрепить к процессу)из списка, прокрутите вниз и выберите
nunit-agent.exeзатем нажмите кнопкуAttach
в этот момент точки останова в ваших тестах должны стать спелыми красными (из пустоты).
клик
RunonNunit Guiи вы должны получить свою точку останова хит...надеюсь, что это экономит ваше время.
относительно чего Г-н Патрик Макдональд сказал
поскольку мой тестовый проект не является стартовым проектом в решении, я запускаю свои тесты, щелкнув правой кнопкой мыши на тестовом проекте и выбрав Debug --> Start New Instance
Я попытался подать заявку на свою библиотеку тестовых классов, но получил некоторую ошибку относительно пути, поэтому я попытался удалить "аргументы командной строки", и, к счастью, он работал хорошо и, как ожидалось.
похоже, что вы пытаетесь использовать неправильную библиотеку. NUnit может запускаться только в том случае, если используемая dll содержит TestFixtures.
+1 вкл TestDriven.Net у меня была возможность использовать его несколько раз. Вы можете скачать личную версию для целей оценки в соответствии с лицензией по адресу http://testdriven.net/purchase_licenses.aspx.
Я получил ту же ошибку с MSTest. Я нашел это в Результат Теста окно, некоторые тесты имели повторяющиеся идентификаторы и не могут быть загружены. Я удалил все дубликаты тестов, и теперь я был в состоянии запустить тесты, когда я начинаю проект.
теперь есть также расширение "Visual NUnit", которое позволит вам запускать тесты из Visual studio так же, как сборка в дескрипторах тестовой платформы. Проверьте его в диспетчере расширений.
откройте Visual Studio - - - > ваш проект - - - > выберите "Свойства" - - - > выберите "отладка" - > выберите "Запустить внешнюю программу" и установите путь вашего NUnit там(например: запустить внешнюю программу = C:\Program файлы\NUnit 2.6.2\bin\nunit.exe) - - - - > Save
после установки этого просто нажмите кнопку "отладка"
для меня решение состояло в том, чтобы адаптировать файл конфигурации nunit. Чтобы использовать nunit с 4.5-.Net framework и x64 build option, мне пришлось добавить одну строку в тег запуска (поддерживаемая runtime-версия).
<startup useLegacyV2RuntimeActivationPolicy="true"> <!-- Comment out the next line to force use of .NET 4.0 --> <supportedRuntime version="v4.0.30319" /> </startup>после этого я мог бы начать, щелкнув правой кнопкой мыши на Testproject Debug - > Start new instance. Раньше мне нужно было снова вручную прикрепить проект к процессу.
мои свойства отладки были, C:\Program файлы (x86)\NUnit 2.6.4\bin\nunit.исполняемый с аргументом местоположения из.dll для тестирования.
дополнительная информация: nunit для тестирования с .NET 4.0
посмотрим, поможет ли это.. Как добавить NUnit в Visual Studio
(праведный)хотя лично мне такой подход не нравится.. Если вам нужен отладчик, пока вы тестируете свой код, это" запах " в том, что у вас недостаточно уверенности/знаете, как работает ваш код, и вам нужен отладчик, чтобы сказать вам об этом. TDD должен освободить вас от необходимости отладчика, если все сделано правильно. Используйте "прикрепить отладчик к NUNit" только в редких случаях или когда вы пробираетесь в кого-то еще один код.




Comments