Jak uruchomić NUnit w trybie debugowania z programu Visual Studio?
Ostatnio budowałem Framework testowy dla trochę C#, nad którym pracowałem. Mam NUnit skonfigurowany i Nowy projekt w moim obszarze roboczym, aby przetestować komponent. Wszystko działa dobrze, jeśli załaduję moje testy jednostkowe z Nunit (v2.4), ale doszedłem do punktu, w którym byłoby naprawdę przydatne uruchomić w trybie debugowania i ustawić kilka break points.
Wypróbowałem sugestie z kilku przewodników, które sugerują zmianę właściwości 'debugowania' projektu testowego:
Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll
Używam wersja konsoli tam, ale próbowałem wywoływanie GUI, jak również. Oba dają mi ten sam błąd, gdy próbuję rozpocząć debugowanie:
Cannot start test project 'TestDSP' because the project does not contain any tests.
To dlatego, że normalnie Ładuję \DSP.nunit do GUI Nunit i tam odbywają się testy?
Zaczynam myśleć, że problem może być taki, że VS chce uruchomić własny framework testowy i dlatego nie znajduje testów NUnit?Edit: do tych, którzy pytają o oprawy testowe, jeden z moich .pliki cs w Projekt TestDSP wygląda mniej więcej tak:
namespace Some.TestNamespace
{
// Testing framework includes
using NUnit.Framework;
[TestFixture]
public class FirFilterTest
{
[Test]
public void Test01_ConstructorTest()
{
...some tests...
}
}
}
...Jestem całkiem nowy w C# i frameworku testowym NUnit, więc jest całkowicie możliwe, że przeoczyłem kilka kluczowych informacji; -)
Ostateczne rozwiązanie : dużym problemem był projekt, którego użyłem. Jeśli wybierzesz Other Languages -> Visual C# -> Test -> Test Project
...podczas wyboru typu projektu, Visual Studio spróbuje użyć własnego frameworka testowego, o ile mogę powiedzieć. Zamiast tego powinieneś wybrać normal C# class library project, a następnie instrukcje w mojej wybranej odpowiedzi będą działać.
19 answers
Używam tej samej techniki co Ty, bez flagi / assembly, czyli
Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe
Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"
Robi TestDSP.dll zawierają wszystkie Twoje poprawki testowe?
Ponieważ mój projekt testowy nie jest projektem startowym w rozwiązaniu, uruchamiam testy klikając prawym przyciskiem myszy na projekcie testowym i wybierając Debug -- > Start New Instance
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-17 10:20:01
Kiedy muszę debugować moje testy NUnit, po prostu dołączam do aplikacji NUnit GUI nunit-agent.exe
używając "Debug|attached to Process" i uruchamiam testy z GUI. Wszystkie punkty przerwania w moich testach (lub kod, który testują) są trafione. Źle zrozumiałam twoje pytanie, czy ci to odpowiada?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-17 16:47:58
Po prostu usuń linię, która wygląda jak
<ProjectTypeGuids>
{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>
Z pliku projektu. Ta linia w zasadzie mówi VS.Net że jest to projekt testowy, a więc "nie można rozpocząć projektu testowego". FYI tutaj pierwszy Guid mówi "to test", drugi mówi " To C#". Informacje o tych identyfikatorach GUID: http://www.mztools.com/Articles/2008/MZ2008017.aspx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-02 21:38:55
Oprócz odpowiedzi udzielonej przez @ Justin oto kilka szczegółów dotyczących NUnit 2.6.
Używanie NUnit 2.6 dołącz do nunit.exe lub nunit-console.exe, a nie agent. Konfiguracja odnotowana przez @ Justin jest nieco inna. Poniżej przykład z nunit.exe.config (to samo dla nunit-console.exe.config).
<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>
W przypadku projektu testowego. NET 4, Aby uzyskać break points, musisz skomentować lub usunąć linię v2.0 zgodnie z sugestią komentarza. Kiedy to zrobiłem, byłem w stanie Debuguj projekt testowy. NET 4.0.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-28 22:01:12
Jeśli używasz NUnit 2.4 lub nowszego możesz umieścić następujący kod w swoim SetUpFixture
klasy. (Możesz to zrobić ze starszymi wersjami, ale będziesz musiał zrobić cokolwiek, co ma odpowiednik SetUpFixture
, lub skopiować go do samego testu.)
[SetUpFixture]
public class SetupFixtureClass
{
[SetUp]
public void StartTesting()
{
System.Diagnostics.Debugger.Launch();
}
}
Co Debugger.Launch()
powoduje to, że po kliknięciu Uruchom w NUnit pojawi się następujące okno dialogowe.
Następnie wybieramy uruchomioną instancję visual studio z otwartym projektem (druga w moim zrzut ekranu) następnie zostanie dołączony debugger i wszelkie punkty przerwania lub wyjątki pojawią się w Visual Studio.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-10 00:01:15
W Nunit 3.0.1 (używam VS2013), Otwórz z menu głównego > Test > Windows > Test Explorer. Następnie w" Test explorer " kliknij prawym przyciskiem myszy przypadek testowy, możesz zobaczyć:
Mam nadzieję, że to pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-16 14:29:42
Install TestDriven.NET , czyli plugin do Visual Studio
Stamtąd możesz kliknąć prawym przyciskiem myszy na swoim zestawie testów jednostkowych i kliknąć Uruchom testy, aby uruchomić cały pakiet, kliknij prawym przyciskiem myszy na klasie TestFixture, aby uruchomić tylko testy w tej klasie, lub kliknij prawym przyciskiem myszy na metodzie testowej, aby uruchomić tylko tę metodę.
Masz również możliwość przetestowania za pomocą debuggera, jeśli chcesz wprowadzić breakpoint do testów w trybie debugowania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-17 10:13:13
Wypróbuj NUnitit-open source Visual Studio Addin do debugowania testów NUnit
Strona główna - http://nunitit.codeplex.com/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-17 10:39:58
Usuń ProjectTypeGuids z pliku projektu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-29 15:05:10
Jeśli jesteś w stanie uruchomić konsolę / lub GUI, ale punkty przerwania nie są trafione, może to być spowodowane tym, że Twoja aplikacja działa w innym środowisku.NET niż NUnit. Sprawdź, czy twój nunit-console.exe.config / nunit.exe.config ma określony czas wykonania.(Konfiguracje żyją w tym samym katalogu co nunit exe.) Określ runtime używając węzła startowego:
<configuration>
<startup>
<supportedRuntime version="4.0" />
</startup>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-16 16:48:09
Jeśli ścieżka projektu zawiera spacje, np. "Nowy Projekt" w ścieżce <path>\bin\Debug\New Project\Quotes.Domain.Tests.dll
, to załącz opcję Start -- > argumenty linii poleceń ścieżka projektu w podwójnych cudzysłowach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-04 18:14:55
Teraz ze zdjęciami:
- Uruchom NUnit gui ( Pobierz 2.6.2 stąd ) następnie przejdź do
File -> Open Project
Wybierz swój test
.dll
z folderu bin (C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll
)-
Przejdź do Visual Studio
Debug -> Attach to process
(otworzy się okno dołączania do procesu) Z listy przewiń w dół i wybierz
nunit-agent.exe
, a następnie kliknijAttach
W tym momencie punkty przerwania w testach powinien skręcić dojrzały czerwony (z wydrążonego).
Kliknij
Run
naNunit Gui
i powinieneś uzyskać trafienie punktu przerwania...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-18 12:00:57
Odnośnie tego, co powiedział Pan Patrick McDonald
Ponieważ mój projekt testowy nie jest projektem startowym w rozwiązaniu, uruchamiam testy klikając prawym przyciskiem myszy na projekcie testowym i wybierając Debug -- > Start New Instance
Próbowałem aplikować do mojej biblioteki klas testowych, ale dostałem jakiś błąd dotyczący ścieżki, więc próbowałem usunąć 'argumenty linii poleceń' i na szczęście działało dobrze i zgodnie z oczekiwaniami.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:32:35
Wygląda na to, że próbujesz użyć złej biblioteki. NUnit może się uruchomić tylko wtedy, gdy biblioteka dll, której używasz, zawiera poprawki testowe.
+ 1 on TestDriven.Net miałem okazję go użyć wiele razy. Możesz pobrać wersję osobistą do celów oceny zgodnie z licencją na http://testdriven.net/purchase_licenses.aspx .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-17 11:06:39
Mam ten sam błąd z MSTest. Okazało się, że w oknie Wyjście testowe niektóre testy miały zduplikowane identyfikatory i nie można ich wczytać. Usunąłem wszystkie zduplikowane testy i teraz byłem w stanie uruchomić testy, gdy rozpoczynam projekt.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-08 19:08:20
Istnieje również rozszerzenie "Visual NUnit", które pozwoli Ci uruchamiać testy z poziomu Visual studio, podobnie jak wbudowane w uchwyty frameworku testowego. Sprawdź to w Menedżerze rozszerzeń.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-11 15:39:37
Otwórz Visual Studio - - - > Twój projekt---> wybierz "Właściwości" - - - > wybierz "Debug" -- > Wybierz "Start external program" i ustaw tam ścieżkę swojego NUnit(np: Start external program = C:\Program Files\NUnit 2.6.2 \ bin\nunit.exe) - - - - >Save
Po ustawieniu tego po prostu kliknij Debug
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-31 09:17:40
Dla mnie rozwiązaniem było dostosowanie pliku konfiguracyjnego nunit. Aby używać nunit z 4.5-.Net framework i opcję x64 build, musiałem dodać jedną linię do znacznika startowego(obsługiwana wersja runtime).
<startup useLegacyV2RuntimeActivationPolicy="true">
<!-- Comment out the next line to force use of .NET 4.0 -->
<supportedRuntime version="v4.0.30319" />
</startup>
Następnie, mogę rozpocząć od kliknięcia prawym przyciskiem myszy na Testproject Debug - > Start new instance. Wcześniej musiałem ponownie ręcznie dołączyć projekt do procesu.
Moje właściwości debugowania to, C:\Program Files (x86)\NUnit 2.6.4\bin\nunit.exe z argumentem o lokalizacji .dll to be sprawdzone.
Więcej informacji: nunit do testów z. NET 4.0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-20 14:00:30
Zobacz, czy to pomoże.. Jak dodać NUnit w Visual Studio
(Sprawiedliwy) chociaż osobiście nie podoba mi się takie podejście.. Jeśli potrzebujesz debugera podczas jazdy testowej kodu ,jest to "zapach" , ponieważ nie masz wystarczającej pewności siebie/wiesz, jak działa kod i potrzebujesz debuggera, aby ci to powiedzieć. TDD powinno uwolnić cię od potrzeby debuggera, jeśli jest zrobione dobrze. Użyj 'attached debugger to NUNit' tylko w rzadkich przypadkach lub gdy brodzisz w cudzym kod.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:59