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ć.

Author: abatishchev, 2009-04-17

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

 44
Author: Patrick McDonald,
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?

 99
Author: Matt Hamilton,
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

 20
Author: user276648,
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.

 18
Author: dblood,
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.

Okno debuggera JIT

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.

 17
Author: Scott Chamberlain,
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ć: Tutaj wpisz opis obrazka

Mam nadzieję, że to pomoże.

 9
Author: Quinn,
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.

 6
Author: Jon Limjap,
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/

 6
Author: abhilash,
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.

 5
Author: Steve,
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>
 2
Author: Justin Turner,
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.

Spędziłem dużo czasu, żeby to rozgryźć.
 2
Author: Gyan Sada,
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:

  1. Uruchom NUnit gui ( Pobierz 2.6.2 stąd ) następnie przejdź do File -> Open Project

Tutaj wpisz opis obrazka

  1. Wybierz swój test .dll z folderu bin (C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll)

  2. Przejdź do Visual Studio Debug -> Attach to process (otworzy się okno dołączania do procesu)

  3. Z listy przewiń w dół i wybierz nunit-agent.exe, a następnie kliknij Attach

Tutaj wpisz opis obrazka

  1. W tym momencie punkty przerwania w testach powinien skręcić dojrzały czerwony (z wydrążonego).

  2. Kliknij Run na Nunit Gui i powinieneś uzyskać trafienie punktu przerwania...

Mam nadzieję, że zaoszczędzisz trochę czasu.
 2
Author: Matas Vaitkevicius,
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.

 1
Author: Abdul Rahman Kayali,
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 .

 0
Author: Mike737,
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.

 0
Author: Vijay,
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ń.

 0
Author: iamkrillin,
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

 0
Author: Farija Khan,
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

 0
Author: Hauke Becker,
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.

 -1
Author: Gishu,
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