Konfigurowanie i używanie funkcji Live Unit Testing

Podczas tworzenia aplikacji funkcja Live Unit Testing automatycznie uruchamia wszystkie objęte testy jednostkowe w tle i prezentuje wyniki i pokrycie kodu w czasie rzeczywistym. Podczas modyfikowania kodu funkcja Live Unit Testing przekazuje opinię na temat sposobu, w jaki zmiany miały wpływ na istniejące testy i czy dodany nowy kod jest objęty co najmniej jednym istniejącym testem. Ta opinia przypomina o pisanie testów jednostkowych podczas wprowadzania poprawek błędów lub dodawania nowych funkcji.

W przypadku korzystania z testów jednostkowych na żywo dane dotyczące stanu testów są utrwalane. Korzystanie z utrwalanych danych umożliwia testowanie jednostkowe na żywo zapewnia lepszą wydajność podczas dynamicznego uruchamiania testów w odpowiedzi na zmiany kodu.

Testy jednostkowe na żywo są dostępne tylko w wersji Enterprise programu Visual Studio dla projektów przeznaczonych dla platformy .NET Core lub .NET Framework.

Obsługiwane platformy testowe

Funkcja Live Unit Testing współpracuje z trzema popularnymi platformami testowania jednostkowego wymienionymi w poniższej tabeli. Pokazano również minimalną obsługiwaną wersję kart i struktur. Wszystkie struktury testowania jednostkowego są dostępne w NuGet.org.

Struktura testowa Minimalna wersja adaptera programu Visual Studio Minimalna wersja platformy
xUnit.net xunit.runner.visualstudio w wersji 2.2.0-beta3-build1187 xunit 1.9.2
NUnit NUnit3TestAdapter w wersji 3.5.1 NUnit w wersji 3.5.0
MSTest MSTest.TestAdapter 1.1.4-preview MSTest.TestFramework 1.0.5-preview

Jeśli masz starsze projekty testowe oparte na narzędziu MSTest odwołujące się do programu Microsoft.VisualStudio.QualityTools.UnitTestFramework i nie chcesz przechodzić do nowszych pakietów NUGet MSTest, przeprowadź uaktualnienie do programu Visual Studio 2019 lub Visual Studio 2017.

W niektórych przypadkach może być konieczne jawne przywrócenie pakietów NuGet, do których odwołuje się projekt live unit testing. Dostępne są dwie opcje:

  • Przywróć, wykonując jawną kompilację rozwiązania. Wybierz pozycję Kompiluj ponownie rozwiązanie> w menu programu Visual Studio najwyższego poziomu.
  • Przywracanie pakietów w rozwiązaniu. Kliknij rozwiązanie prawym przyciskiem myszy i wybierz polecenie Przywróć pakiety NuGet.

Konfiguruj

Przy pierwszym uruchomieniu funkcji Live Unit Testing dla rozwiązania kreator instalacji umożliwia skonfigurowanie sposobu kompilowanie i uruchamianie testów jednostkowych na żywo.

Po zatrzymaniu funkcji Live Unit Testing można również otworzyć kreatora instalacji, przechodząc do sekcji Testowanie>testów jednostkowych na żywo Konfigurowanie testów jednostkowych>na żywo dla rozwiązania.

Po uruchomieniu funkcji Live Unit Testing zostanie utworzony obszar roboczy, który jest kopią oryginalnego repozytorium. Funkcja Live Unit Testing stosuje następnie wszelkie niezapisane zmiany wprowadzone w programie Visual Studio do obszaru roboczego, wykonuje kompilację, przeprowadza przebieg testu i raportuje najnowsze pokrycie kodu.

Pierwszą rzeczą, którą należy skonfigurować za pomocą kreatora, jest lokalizacja, z której mają być kopiowane pliki i do których należy je skopiować.

Zrzut ekranu przedstawiający stronę kreatora konfiguracji testów jednostkowych na żywo 1.

Katalog główny repozytorium

Katalog główny repozytorium określa folder, który zostanie skopiowany do utworzenia obszaru roboczego Live Unit Testing. Powinien to być folder główny repozytorium, czyli powinien zawierać wszystkie źródła, pliki binarne i narzędzia. W przypadkach, gdy plik rozwiązania nie znajduje się w katalogu głównym repozytorium, może być konieczne zmianę katalogu głównego repozytorium.

Katalog główny obszaru roboczego

Katalog główny obszaru roboczego określa folder, w którym funkcja Live Unit Testing przechowuje klon repozytorium. Zwróć uwagę na wyjątki wskazujące, że ścieżka jest za długa. Domyślnie katalog główny jest tworzony w folderze głównym. Jeśli jednak zwykle musisz utworzyć repozytorium na dysku C, katalog główny obszaru roboczego może zostać dostosowany do elementu takiego jak C:\lut\Repo.

Określanie wykluczonych plików

Nie wszystkie pliki powinny być kopiowane do obszaru roboczego Live Unit Testing. Wszystkie artefakty generowane podczas kompilacji powinny być wykluczone z kopiowania, aby zwykłe kompilacje nie zakłócały kompilacji testów jednostkowych na żywo. Ponadto regularne nuget restore polecenie nie powinno zakłócać działania polecenia Live Unit Testing nuget restore .

Domyślnie funkcja Live Unit Testing wyklucza jeden z dwóch wzorców plików:

  • W przypadku repozytoriów Git pliki określone w pliku gitignore nie są kopiowane do obszaru roboczego Live Unit Testing.
  • W przypadku repozytoriów innych niż Git podstawowa lista folderów, takich jak bin/ i obj/, nie są kopiowane do obszaru roboczego Live Unit Testing.

W przypadku bardziej złożonych repozytoriów może być konieczne określenie własnego pliku ignoruj. Wybierz opcję "<Niestandardowy>" z kreatora. Po wybraniu pozycji Dalej zawartość niestandardowego pliku ignorowania tworzonego przez funkcję Live Unit Testing po zakończeniu działania kreatora zostanie wyświetlona. To plik lutignore.

Uwaga

Niestandardowy plik lutignore jest wymagany w przypadku niektórych repozytoriów Git, ponieważ istnieje możliwość zaewidencjonowania plików w repozytorium Git, które są również ignorowane przez plik gitignore . Bez niestandardowego pliku lutignore testy jednostkowe na żywo nie będą kopiować tych plików, co może prowadzić do niepowodzeń kompilacji.

Lutignore, struktura pliku

Plik lutignore używa tego samego formatu co plik gitignore . Powinna zawierać reguły zgodne z folderami lub plikami wygenerowanymi podczas kompilacji, aby nie były kopiowane do obszaru roboczego. W przypadku większości domyślnych szablonów projektów wystarczy następujący plik ignoruj:

[BB]IN
[OO]BJ
# WILL NOT COPY ANY BIN AND OBJ FOLDERS TO THE LIVE UNIT TESTING WORKSPACE

Jeśli repozytorium ma jeden folder kompilacji, plik ignoruj powinien zawierać listę tego folderu:

[AA]RTIFACTS/
# WILL NOT COPY THE ARTIFACTS FOLDER TO THE LIVE UNIT TESTING WORKSPACE

Jeśli repozytorium zawiera inne narzędzia w folderze kompilacji, te narzędzia powinny zostać wykluczone w zestawie pasujących wzorców:

[AA]RTIFACTS/
![AA]RTIFACTS/TOOLS/
# WILL NOT COPY THE ARTIFACTS FOLDER TO THE LIVE UNIT TESTING WORKSPACE
# HOWEVER IT WILL COPY THE TOOLS SUBFOLDER THAT MIGHT CONTAIN TOOLS AND UTILITIES

Opcje kompilacji

Drugą częścią strony konfiguracji kreatora jest konfigurowanie opcji kompilacji:

  • Generowanie plików PDB: aby przyspieszyć kompilację, funkcja Live Unit Testing nie generuje plików PDB podczas kompilacji. Te pliki symboli umożliwiają przechodzenie do śladów stosu po wystąpieniu niepowodzeń testów.
  • Kompilowanie przy użyciu wielu rdzeni procesora CPU: domyślnie funkcja Live Unit Testing wykonuje kompilacje przy użyciu wielu rdzeni procesora CPU, co poprawia czas kompilacji. Jeśli maszyna spowalnia lub nie można skompilować rozwiązania przy użyciu wielu procesorów, nie wybieraj tej opcji.

Opcje przebiegu testu

Ostatnią częścią strony konfiguracji kreatora jest skonfigurowanie opcji przebiegu testu:

  • Limit czasu przypadku testowego: uruchomienie niektórych testów może zająć dużo czasu. Ustawienie tego pola powoduje automatyczne przerwanie przebiegów, jeśli którykolwiek z testów przekracza określony czas trwania. Testy można anulować automatycznie.
  • Użyj wielu procesorów: domyślnie funkcja Live Unit Testing próbuje użyć wielu procesorów, aby przyspieszyć wydajność uruchamiania. Jeśli maszyna spowalnia lub jeśli rozwiązanie nie może uruchamiać testów równolegle, nie wybieraj tej opcji. Na przykład te scenariusze mogą wystąpić, jeśli wiele testów spróbuje zapisać/odczytać z tych samych ścieżek plików.

Więcej konfiguracji

Skonfiguruj testowanie jednostkowe na żywo, wybierając pozycję Opcje narzędzi>na pasku menu programu Visual Studio najwyższego poziomu. W lewym okienku okna dialogowego Opcje wybierz pozycję Live Unit Testing.

Po włączeniu funkcji Live Unit Testing (zobacz Uruchamianie, wstrzymywanie i zatrzymywanie testów jednostkowych na żywo) możesz również otworzyć okno dialogowe Opcje, wybierając pozycję Testuj opcje testowania>jednostkowego>na żywo.

Na poniższej ilustracji przedstawiono opcje konfiguracji funkcji Live Unit Testing dostępne w oknie dialogowym.

Zrzut ekranu przedstawiający opcje konfiguracji funkcji Live Unit Testing.

Konfigurowalne opcje obejmują:

  • Czy testy jednostkowe na żywo są wstrzymywane podczas kompilowania i debugowania rozwiązania.

  • Czy funkcja Live Unit Testing wstrzymuje się, gdy moc baterii systemu spadnie poniżej określonego progu.

  • Możliwość usunięcia wszystkich utrwalonych danych. Ta funkcja jest przydatna, gdy testy jednostkowe na żywo zachowują się w nieprzewidywalny lub nieoczekiwany sposób, co sugeruje, że utrwalone dane są uszkodzone.

  • Maksymalna ilość pamięci używanej przez procesy live unit testing.

  • Poziom informacji zapisanych w oknie Dane wyjściowe testów jednostkowych na żywo.

    Opcje obejmują brak rejestrowania (Brak), tylko komunikaty o błędach (Błąd), komunikaty o błędach i komunikaty informacyjne (Informacje, wartość domyślna) lub wszystkie szczegóły (pełne).

    Pełne dane wyjściowe można również wyświetlić w oknie Dane wyjściowe testów jednostkowych na żywo, przypisując wartość 1 do zmiennej środowiskowej na poziomie użytkownika o nazwie VS_UTE_DIAGNOSTICS. Następnie uruchom ponownie program Visual Studio.

    Aby przechwycić szczegółowe komunikaty dziennika programu MSBuild z funkcji Live Unit Testing w pliku, ustaw LiveUnitTesting_BuildLog zmienną środowiskową na poziomie użytkownika na nazwę pliku, aby zawierał dziennik.

Dostosowywanie kompilacji na potrzeby testów jednostkowych na żywo

W przypadku bardziej złożonych rozwiązań może być konieczne dalsze dostosowanie kompilacji. Na przykład może nie być konieczne skompilowanie plików tłumaczenia podczas przebiegów testów. Aby przyspieszyć kompilacje, możesz wyłączyć kompilację pliku tłumaczenia za pomocą funkcji Live Unit Testing. Można to zrobić, manipulując plikami projektu.

Dodawanie przesłonięć testów jednostkowych na żywo

Jeśli twoje rozwiązanie wymaga niestandardowych kroków kompilacji dla instrumentacji (Live Unit Testing), które nie są wymagane dla "regularnej" kompilacji nieinstrumentowanej, możesz dodać kod do projektu lub plików docelowych , które sprawdzają BuildingForLiveUnitTesting właściwość i wykonują niestandardowe kroki przed kompilacją/po kompilacji.

Na przykład możesz napisać następujący przykład, aby dodać inny obiekt docelowy wykonywany tylko na potrzeby testów jednostkowych na żywo:

<Target Name="GenerateNuGetPackages" BeforeTargets="AfterBuild" Condition="'$(BuildingForLiveUnitTesting)' == 'true'">
    <Exec Command='"$(MSBuildThisFileDirectory)..\tools\GenPac" '/>
</Target>

Za pomocą BuildingForLiveUnitTesting właściwości można wyłączyć niektóre zadania, które nie powinny być wykonywane na potrzeby kompilacji testowych. Na przykład zestawy <RunAnalyzers>false</RunAnalyzers> testów jednostkowych na żywo wyłączają analizatory testów.

Zależności testów jednostkowych na żywo

Możliwe, że nie wszystkie pliki zostały skopiowane, które są wymagane do uruchomienia testów. Funkcja Live Unit Testing tworzy oddzielny folder, w którym uruchamia testy. To rozmieszczenie umożliwia tworzenie kompilacji podczas uruchamiania testów, ale nie wszystkie pliki z folderu kompilacji są kopiowane do folderu testowego.

Zazwyczaj należy dodać zależności testowe z jednego z dwóch powodów:

  • Testy zależą od plików w drzewie źródłowym. Na przykład testy sprawdzają zawartość plików resx lub mogą odczytywać niektóre pliki konfiguracji.
  • Testy zależą od niektórych bibliotek, do których się odwołują. Na przykład test uruchamia plik wykonywalny utworzony jako zależność.

Uwaga

Zależności testowe muszą istnieć w katalogu określonym jako katalog główny repozytorium w kreatorze instalacji.

W obu przypadkach testy jednostkowe na żywo domyślnie nie będą kopiować tych plików w celu zminimalizowania liczby plików, które muszą zostać skopiowane w celu uruchomienia testu. Należy jawnie określić te pliki przy użyciu LiveUnitTestingTestDependency właściwości , jeśli są one potrzebne do uruchomienia testowego. Załóżmy na przykład, że mamy następujący układ:

SRC/
  CONSOLE_UTILITY/
  TEST_PROJECT/
ARTIFACTS/
  CONSOLE_UTILITY/NET472/DEBUG/
  TEST_PROJECT/NET472/DEBUG/

Domyślnie podczas kompilowania tych projektów przy użyciu funkcji Live Unit Testing jest on kopiowany Artifacts/Test_Project tylko do folderu testowego. Aby dodać źródła lub console_utility do folderu testowego, dodaj następujący przykład do :test_project.csproj

<LiveUnitTestingTestDependency Include=”$(RepoRoot)/Src/ConsoleUtility” />
<LiveUnitTestingTestDependency Include=”$(RepoRoot)/Artifacts/ConsoleUtility/net472/$(Configuration)/</LiveUnitTestingTestDependency” />

Uruchamianie, wstrzymywanie i zatrzymywanie

Aby włączyć testowanie jednostkowe na żywo, wybierz pozycję Testuj testy>jednostkowe>na żywo Start w menu programu Visual Studio najwyższego poziomu. Po włączeniu funkcji Live Unit Testing opcje dostępne w menu Live Unit Testing zmieniają się z jednego elementu, Start, na Wstrzymaj i Zatrzymaj:

  • Wstrzymywanie tymczasowo zawiesza testy jednostkowe na żywo.

    Po wstrzymaniu funkcji Live Unit Testing wizualizacja pokrycia nie jest wyświetlana w edytorze, ale wszystkie zebrane dane są zachowywane. Aby wznowić testowanie jednostkowe na żywo, wybierz pozycję Kontynuuj w menu Live Unit Testing . Funkcja Live Unit Testing wykonuje niezbędne działania, aby nadrobić zaległości we wszystkich modyfikacjach, które zostały wprowadzone podczas jego wstrzymania i odpowiednio aktualizuje glyphs.

  • Zatrzymaj całkowicie zatrzymaj testy jednostkowe na żywo. Funkcja Live Unit Testing odrzuca wszystkie zebrane dane.

Jeśli uruchomisz testy jednostkowe na żywo w rozwiązaniu, które nie zawiera projektu testu jednostkowego, opcje Wstrzymaj i Zatrzymaj są wyświetlane w menu Live Unit Testing, ale testy jednostkowe na żywo nie są uruchamiane. W oknie Dane wyjściowe zostanie wyświetlony komunikat rozpoczynający się "Żadne obsługiwane karty testowe nie są przywoływane przez to rozwiązanie...".

W dowolnym momencie możesz tymczasowo wstrzymać lub całkowicie zatrzymać testy jednostkowe na żywo. Możesz na przykład chcieć wykonać te akcje, jeśli jesteś w trakcie refaktoryzacji i wiesz, że testy zostaną przerwane przez jakiś czas.

Dołączanie i wykluczanie projektów testowych i metod testowych

Po uruchomieniu funkcji Live Unit Testing zostanie wyświetlone okno narzędzia Live Unit Testing i zostanie wyświetlone monit o wybranie zestawu testów, które mają być testowane przez testy jednostkowe na żywo.

Zrzut ekranu przedstawiający okno narzędzia wyświetlane po uruchomieniu funkcji Live Unit Testing po raz pierwszy.

W przypadku mniejszych rozwiązań, w których uruchamianie testów jednostkowych zajmuje bardzo mało czasu, wybierz pozycję Uwzględnij wszystkie testy, co sprawia, że testy jednostkowe na żywo uruchamiają wszystkie testy.

W przypadku większych rozwiązań z wieloma projektami testowymi można kontrolować, które projekty i poszczególne metody w projekcie uczestniczą w testach jednostkowych na żywo, edytując listę odtwarzania. Jeśli na przykład masz rozwiązanie z setkami projektów testowych, możesz wybrać docelowy zestaw projektów testowych, aby wziąć udział w testach jednostkowych na żywo.

Możesz wybrać, jakie testy jednostkowe na żywo powinny być uruchamiane, edytując listę odtwarzania live Unit Testing, funkcję, która działa podobnie jak listy odtwarzania w Eksploratorze testów.

Istnieje wiele sposobów edytowania listy odtwarzania funkcji Live Unit Testing:

  • Okno narzędzia Live Unit Testing
  • Okno edytora kodu
  • Eksplorator rozwiązań
  • Programowo w kodzie testowym

Funkcja Live Unit Testing zapisuje stan dołączania/wykluczania jako ustawienia użytkownika i zapamiętuje go po zamknięciu i ponownym otwarciu rozwiązania.

Okno narzędzia Live Unit Testing

Edytor listy odtwarzania dla karty Live Unit Testing umożliwia dołączanie lub wykluczanie projektów, przestrzeni nazw lub klas z wykonania. Wybierz pozycję Edytuj listę odtwarzania w oknie narzędzia.

Możesz wybrać lub wyczyścić elementy widoku drzewa, aby uwzględnić lub wykluczyć testy. Jeśli na przykład sprawdzisz pojedynczy test, testy jednostkowe na żywo uruchamiają je na zmianach. Jeśli wybierzesz klasę, wszystkie testy w tej klasie będą uruchamiane i wszystkie nowe testy dodane do tej klasy.

Zrzut ekranu przedstawiający edytor listy odtwarzania funkcji Live Unit Testing.

Okno edytora kodu

Możesz użyć okna edytora kodu, aby uwzględnić lub wykluczyć poszczególne metody testowania. Kliknij prawym przyciskiem myszy podpis lub treść metody testowej w oknie edytora kodu i wybierz jedną z następujących opcji:

  • Live Unit Testing>Include selected method (Uwzględnij wybraną metodę)<>
  • Wybrana metoda wykluczania <testów jednostkowych>na żywo>
  • Live Unit Testing Exclude All But selected method (Testowanie jednostkowe>na żywo wyklucza wszystkie, ale <wybranej metody)>

Eksplorator rozwiązań

Aby wybrać poszczególne projekty w testach jednostkowych, wykonaj następujące kroki po uruchomieniu testów jednostkowych na żywo:

  1. Kliknij prawym przyciskiem myszy rozwiązanie w Eksplorator rozwiązań i wybierz pozycję Wyklucz testowanie jednostkowe>na żywo, aby wykluczyć całe rozwiązanie.
  2. Kliknij prawym przyciskiem myszy każdy projekt testowy, który chcesz uwzględnić w testach, a następnie wybierz pozycję Uwzględnij testy jednostkowe> na żywo.

Programowo w kodzie testowym

Atrybut można zastosować ExcludeFromCodeCoverageAttribute do programowego wykluczania metod, klas lub struktur z raportowania ich pokrycia w testach jednostkowych na żywo.

Użyj następujących atrybutów, aby wykluczyć poszczególne metody z testów jednostkowych na żywo:

  • xUnit: [Trait("Category", "SkipWhenLiveUnitTesting")]
  • NUnit: [Category("SkipWhenLiveUnitTesting")]
  • MSTest: [TestCategory("SkipWhenLiveUnitTesting")]

Użyj następujących atrybutów, aby wykluczyć cały zestaw testów z testów jednostkowych na żywo:

  • xUnit: [assembly: AssemblyTrait("Category", "SkipWhenLiveUnitTesting")]
  • NUnit: [assembly: Category("SkipWhenLiveUnitTesting")]
  • MSTest: [assembly: TestCategory("SkipWhenLiveUnitTesting")]

Wyświetlanie wizualizacji pokrycia

Po włączeniu funkcji Live Unit Testing aktualizuje każdy wiersz kodu w edytorze programu Visual Studio, aby pokazać, czy kod, który piszesz, jest objęty testami jednostkowym i czy testy, które go obejmują, przechodzą.

Na poniższej ilustracji przedstawiono wiersze kodu z przekazywaniem i niepowodzeniem testów oraz wierszami kodu, które nie są objęte testami. Linie z zielonym "}" są objęte tylko przez testy z przekazywaniem. Wiersze z czerwonym "x" są objęte co najmniej jednym testem zakończonym niepowodzeniem. Linie z niebieskim "➖" nie są objęte żadnym testem.

Zrzut ekranu przedstawiający pokrycie kodu w programie Visual Studio.

Wizualizacja pokrycia testów jednostkowych na żywo jest aktualizowana natychmiast po zmodyfikowaniu kodu w edytorze kodu. Podczas przetwarzania edycji wizualizacja zmienia się, aby wskazać, że dane nie są aktualne, dodając obraz czasomierza okrężnego pod przekazanym, nieudanym i nieuwzwiązanym symbolami, jak pokazano na poniższej ilustracji.

Zrzut ekranu przedstawiający pokrycie kodu w programie Visual Studio z ikoną czasomierza.

Uzyskiwanie informacji o stanie testu

Po umieszczeniu wskaźnika myszy na przekazanym lub nieudanym symbolu w oknie kodu można zobaczyć, ile testów osiąga ten wiersz. Aby wyświetlić stan poszczególnych testów, wybierz symbol.

Zrzut ekranu przedstawiający stan testu symbolu w programie Visual Studio.

Oprócz podawania nazw i wyników testów etykietka narzędzia umożliwia ponowne uruchamianie lub debugowanie zestawu testów. Jeśli wybierzesz co najmniej jeden test w etykietce narzędzia, możesz również uruchomić lub debugować tylko te testy. Ta akcja umożliwia debugowanie testów bez konieczności opuszczania okna kodu.

Podczas debugowania oprócz obserwowania wszystkich punktów przerwania, które mogły już być ustawione, wykonywanie programu jest wstrzymywane, gdy debuger wykonuje metodę Assert zwracającą nieoczekiwany wynik.

Po umieszczeniu wskaźnika myszy na teście, który zakończył się niepowodzeniem w etykietce narzędzia, rozwija się, aby uzyskać więcej informacji o niepowodzeniu, jak pokazano na poniższej ilustracji. Aby przejść bezpośrednio do testu, który zakończył się niepowodzeniem, kliknij go dwukrotnie w etykietce narzędzia.

Zrzut ekranu przedstawiający informacje o etykietce narzędzia testowego w programie Visual Studio, które zakończyły się niepowodzeniem.

Po przejściu do testu, które zakończyły się niepowodzeniem, funkcja Live Unit Testing wizualnie wskazuje w podpisie metody testy, które mają:

  • Passed (wskazywany przez pół-pełny bekaker wraz z zielonym "^").
  • Niepowodzenie (wskazywane przez pół-pełny bekaker wraz z czerwonym "🞩").
  • Nie są zaangażowane w live unit testing (wskazywane przez pół pełnego beakera wraz z niebieskim "➖").

Metody nietestowe nie są identyfikowane z symbolem. Na poniższej ilustracji przedstawiono wszystkie cztery typy metod.

Zrzut ekranu przedstawiający metody testowe w programie Visual Studio z przekazanymi lub nieudanymi symbolami.

Diagnozowanie i poprawianie błędów testów

W teście, który zakończył się niepowodzeniem, można łatwo debugować kod produktu, wprowadzać zmiany i kontynuować tworzenie aplikacji. Ponieważ testy jednostkowe na żywo są uruchamiane w tle, nie trzeba zatrzymywać i uruchamiać ponownie testów jednostkowych na żywo podczas debugowania, edytowania i kontynuowania cyklu.

Na przykład niepowodzenie testu pokazane na poprzedniej ilustracji zostało spowodowane przez nieprawidłowe założenie w metodzie testowej, że znaki niefabetyczne są zwracane true po przekazaniu do System.Char.IsLower metody. Po skorygowaniu metody testowej wszystkie testy powinny zostać wykonane pomyślnie. Nie musisz wstrzymywać ani zatrzymywać testów jednostkowych na żywo.

Okno Live Unit Testing

Testy jednostkowe na żywo, podobnie jak w Eksploratorze testów, udostępnia interfejs umożliwiający uruchamianie i debugowanie testów oraz analizowanie wyników testów. Po włączeniu funkcji Live Unit Testing stan testów jednostkowych w Eksploratorze testów jest natychmiast aktualizowany. Nie trzeba jawnie uruchamiać testów jednostkowych.

Gdy funkcja Live Unit Testing nie jest włączona lub jest zatrzymana, funkcja Live Unit Testing wyświetla stan testów jednostkowych podczas ostatniego uruchomienia testu. Po ponownym uruchomieniu testów jednostkowych na żywo wymagana jest zmiana kodu źródłowego w celu ponownego uruchomienia testów.

Możesz rozpocząć testowanie jednostkowe na żywo, wybierając pozycję Testuj testy>jednostkowe>na żywo Start w menu programu Visual Studio najwyższego poziomu. Możesz również otworzyć okno Live Unit Testing przy użyciu okna Wyświetl>inne okna testów jednostkowych systemu Windows>Live.

W oknie Live Unit Testing można zauważyć, że niektóre testy są wyblakłe. Na przykład po zatrzymaniu i ponownym uruchomieniu funkcji Live Unit Testing okno Live Unit Testing zanika wszystkie testy, jak pokazano na poniższej ilustracji.

Wyniki testu faded-out wskazują, że test nie był częścią najnowszego przebiegu testu jednostkowego na żywo. Testy są uruchamiane tylko wtedy, gdy zostanie wykryta zmiana testu lub zależności testu. Jeśli nie ma żadnych zmian, pozwala uniknąć niepotrzebnego uruchamiania testu. W tym przypadku szary wynik testu jest nadal "aktualny", chociaż nie był częścią najnowszego przebiegu.

Zrzut ekranu przedstawiający wyblakłe testy w Eksploratorze testów.

Możesz ponownie uruchomić wszystkie testy, które pojawiają się wyblakłe, wprowadzając zmianę kodu.

Istnieją pewne różnice między automatycznym uruchamianiem testów jednostkowych na żywo i aktualizowaniem wyników testów oraz jawnym uruchamianiem testów z Poziomu Eksploratora testów. Różnice te obejmują:

  • Uruchamianie lub debugowanie testów w oknie Eksplorator testów uruchamia zwykłe pliki binarne. Testy jednostkowe na żywo uruchamia instrumentowane pliki binarne.
  • Testy jednostkowe na żywo nie tworzą nowej domeny aplikacji do uruchamiania testów. Zamiast tego uruchamia testy z domeny domyślnej. Testy są uruchamiane w oknie Eksplorator testów, aby utworzyć nową domenę aplikacji.
  • Testy jednostkowe na żywo uruchamiają testy w każdym zestawie testowym sekwencyjnie. W oknie Eksplorator testów możesz uruchomić wiele testów równolegle.

Anulowanie przebiegów testów jednostkowych na żywo

Testy jednostkowe na żywo są uruchamiane przy każdym wprowadzeniu zmian w kodzie. Jeśli przebieg jest w toku i wprowadzasz więcej zmian w kodzie, testy jednostkowe na żywo kolejkuje kolejny przebieg podczas oczekiwania na ukończenie pierwszego uruchomienia.

Za każdym razem, gdy zapisujesz pliki, funkcja Live Unit Testing anuluje pierwszy przebieg i natychmiast planuje zamiast tego przebieg w kolejce. Ten proces pomaga w scenariuszach, w których wykonanie pierwszego uruchomienia zajęłoby dużo czasu.

Zobacz też