Udostępnij za pośrednictwem


Za pomocą Code Coverage, aby określić, jak dużo kodu jest badany

Aby określić, jaka część kodu projektu jest faktycznie testowany przez zakodowanej badań, takich jak testy, można użyć funkcji pokrycia kodu programu Visual Studio.Aby skutecznie zabezpieczyć się przed błędów, testy powinny wykonywać lub "pokrycie" znaczna część kodu.

Analizy pokrycia kodu mogą być stosowane do zarządzanych (CLI) i kod niezarządzany (w trybie macierzystym).

Użycie kodu jest opcja podczas wykonywania metody badań, za pomocą Eksploratora przetestować.Tabela wyników zawiera procent kod, który został uruchomiony w każdej montażu, klasy i metody.Ponadto Edytor źródła pokazuje kod, który został przetestowany.

Kod zapotrzebowania wyniki z kolorowanie

Wymagania

  • Visual Studio Ultimate, Visual Studio Premium

Aby analizować użycie kodu na testy w Eksploratorze testu

  1. Na Test menu, wybierz polecenie Analizowanie użycie kodu.

  2. Aby zobaczyć, które linie był być prawidłowo użytkowany, wybrać opcję Pokaż ikonę kolorowanie pokrycia koduPokaż kolorowanie pokrycia kodu.

    Aby zmienić kolory lub użyć pogrubioną, wybierz polecenie Narzędzia, Opcje, środowiska, czcionki i kolory, Pokaż ustawienia dla: Edytor tekstu.W obszarze Wyświetl elementy, dopasować zapotrzebowanie na towary.

  3. Jeśli wykażą, słaby sygnał, należy zbadać, które fragmenty kodu są nie sprawuje i napisać więcej testów na pokrycie tych kosztów.Zespoły deweloperów zazwyczaj mają około 80% kod zapotrzebowania.W niektórych sytuacjach niższe zapotrzebowania jest dopuszczalne.Na przykład niższe zapotrzebowania jest dopuszczalne gdzie jakiś kod jest generowany na podstawie standardowego szablonu.

PoradaPorada

Aby uzyskać dokładne wyniki:

  • Upewnij się, że tej optymalizacji kompilator jest wyłączona.

    Jeśli pracujesz z niezarządzanego kodu (w trybie macierzystym), należy użyć kompilacja do debugowania.

  • Upewnij się, że dla każdego zestawu generowania plików .pdb (symbol).

Jeśli nie otrzymasz wyników, można się spodziewać, zobacz Pokrycie kodu — wyszukiwanie błędów.

Zgłoszenie w bloków lub linii

Użycie kodu jest liczony w bloków.Blok jest fragment kodu z dokładnie jeden punkt wejścia i wyjścia.Jeżeli przepływ sterowania programu przechodzi przez blok podczas próbną, tego bloku jest liczony jako podlegającego.Ile razy użyć blok nie wpływa na wynik.

Program może również wyniki wyświetlane w postaci linii, wybierz polecenie Dodaj/Usuń kolumny w nagłówku tabeli.Jeżeli badania wykonywane wszystkie bloki kodu w każdym wierszu kodu, jest liczony jako jeden wiersz.W przypadku, gdy wiersz zawiera niektóre bloki kodu, które były wykonywane i takie, które nie były, który jest liczony jako częściowej wiersza.

Niektórzy użytkownicy wolą liczbę wierszy, ponieważ wartości procentowe ściślej odpowiadać rozmiar fragmentów, które widać w kodzie źródłowym.Duży blok obliczeń będzie liczyć jako pojedynczy blok, nawet jeśli zajmuje wiele linii.

Zarządzanie wynikami pomiaru pokrycia kodu

Okno Kod zapotrzebowania wyniki zazwyczaj pokazuje wyniku najnowszych uruchamiania.Wyniki będą się różnić, jeśli zmieniasz dane z badań, czy tylko niektóre z testów przy każdym uruchomieniu.

Okno Użycie kodu można również do poprzedniego widoku wyników lub wyników uzyskanych na innych komputerach.

Można scalać wyniki kilka tras, na przykład od tras, które używają różnych badań.

  • Aby wyświetlić poprzedni zestaw wyników, wybierz go z menu rozwijanego.Menu wyświetlana jest lista tymczasowy, który jest wyczyszczone, podczas otwierania nowego rozwiązania.

  • Aby wyświetlić wyniki z poprzedniej sesji, wybierz polecenie Zaimportować wynikami pomiaru pokrycia kodu, przejdź do folderu TestResults w swoje rozwiązanie i zaimportować plik .coverage.

    Kolorowanie zapotrzebowania mogą być niepoprawne, jeśli kod źródłowy zmienił się, ponieważ plik .coverage został wygenerowany.

  • Aby wyniki odczytu jako tekst, wybierz polecenie Eksportuj wyniki do pokrycia kodu.Spowoduje to wygenerowanie pliku można odczytać .coveragexml, który może przetwarzać inne narzędzia lub łatwo wysłania ich pocztą.

  • Aby wysłać wyniki do innej osoby, Wyślij plik .coverage lub .coveragexml eksportowanego pliku.Można następnie zaimportować plik.Jeśli mają tej samej wersji kodu źródłowego, mogą zobaczyć kolorowanie zapotrzebowania.

Scalanie wyników z różnych tras

W niektórych sytuacjach w zależności od tego, dane z badań będą używane różne bloki w kodzie.W związku z tym można wykorzystać wyniki z różnych testów.

Na przykład załóżmy, że po uruchomieniu testu z wejściowego "2", możesz znaleźć objęcie 50% określonej funkcji.Po uruchomieniu testu po raz drugi z danych wejściowych "-2" widoczny zakres kolorowania widok objęcie pozostałe 50% funkcji.Teraz scalić wyniki z dwóch testów, a raport i zasięgu kolorowania Widok Pokaż było objęcie 100% funkcji.

Użycie Ikona przycisku korespondencji seryjnej w okno Użycie koduWyniki scalania pokrycia kodu w tym celu.Można wybrać dowolną kombinację ostatnich uruchomień lub importowanych wyników.Jeśli chcesz połączyć wyeksportowano wyniki, należy je najpierw zaimportować.

Użycie Eksportuj wyniki do pokrycia kodu Aby zapisać wyniki operacji scalania.

Dd537628.collapse_all(pl-pl,VS.110).gifOgraniczenia w scalaniu

  • W przypadku scalania danych zapotrzebowania z różnych wersji kodu, wyniki wyświetlane są oddzielnie, ale nie są połączone.Aby uzyskać w pełni otrzymanych wyników, należy ten sam budować kod, zmienianie tylko dane z badań.

  • W przypadku scalania pliku wyników, które zostały wywiezione, a następnie zaimportowane, wyniki można tylko przeglądać za pomocą linii, a nie przez bloki.Użycie Dodaj/Usuń kolumny polecenia umożliwia wyświetlanie danych wiersza.

  • W przypadku scalania wyniki badań projektu programu ASP.NET, wyniki dla oddzielne badania są wyświetlane, ale nie łączy.Dotyczy to tylko same artefakty ASP.NET: wyniki dla innych zestawów, które mają zostać połączone.

Wykluczanie elementów z listy Kod zapotrzebowania wyników

Może zaistnieć potrzeba wykluczenia określonych elementów w kodzie z ocenę zapotrzebowania, na przykład, jeśli kod jest generowany na podstawie szablonu.Dodaj atrybut System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage do dowolnego z następujących elementów kodu: klasy struct, metody, właściwości, metody ustawiającej właściwości lub metody pobierającej, zdarzenie.Należy zauważyć, że z wyjątkiem klasy nie wyklucza jej klas pochodnych.

Na przykład:

using System.Diagnostics.CodeAnalysis; 
...
public class ExampleClass1
{ 
    [ExcludeFromCodeCoverage]
    void ExampleMethod() {...}

    [ExcludeFromCodeCoverage] // exclude property
    int ExampleProperty1 
    { get {...} set{...}}

    int ExampleProperty2
    {
        get
        {
            ...
        }
        [ExcludeFromCodeCoverage] // exclude setter
        set
        {
            ...
        }
    }
 
}
[ExcludeFromCodeCoverage]
class ExampleClass2 { ... }
Imports System.Diagnostics.CodeAnalysis


Class ExampleClass1        
    <ExcludeFromCodeCoverage()>
    Public Sub ExampleSub1()
        ...
    End Sub

    ' Exclude property
    < ExcludeFromCodeCoverage()>
    Property ExampleProperty1 As Integer
        ...
    End Property

    ' Exclude setter
    Property ExampleProperty2 As Integer
        Get
            ...
        End Get
        <ExcludeFromCodeCoverage()>
        Set(ByVal value As Integer)
            ...
        End Set
    End Property
End Class

<ExcludeFromCodeCoverage()>
Class ExampleClass2
...
End Class
// A .cpp file compiled as managed (CLI) code.
using namespace System::Diagnostics::CodeAnalysis;
...
public ref class ExampleClass1
{
  public:
    [ExcludeFromCodeCoverage]
    void ExampleFunction1() { ... }
    
    [ExcludeFromCodeCoverage]
    property int ExampleProperty2 {...}

    property int ExampleProperty2 {
      int get() { ... }
     [ExcludeFromCodeCoverage]
      void set(int value) { ...  }
   }

}

[ExcludeFromCodeCoverage]
public ref class ExampleClass2
{ ... }

Dd537628.collapse_all(pl-pl,VS.110).gifWykluczanie elementów w kodzie macierzystym C++

Aby wykluczyć w kodzie języka C++ niezarządzanego elementy (w trybie macierzystym):

#include <CodeCoverage\CodeCoverage.h>
...

// Exclusions must be compiled as unmanaged (native):
#pragma managed(push, off)

// Exclude a particular function:
ExcludeFromCodeCoverage(Exclusion1, L"MyNamespace::MyClass::MyFunction");

// Exclude all the functions in a particular class:
ExcludeFromCodeCoverage(Exclusion2, L"MyNamespace::MyClass2::*");

// Exclude all the functions generated from a particular template: 
ExcludeFromCodeCoverage(Exclusion3, L"*::MyFunction<*>"); 


// Exclude all the code from a particular .cpp file:
ExcludeSourceFromCodeCoverage(Exclusion4, L"*\\unittest1.cpp");

// After setting exclusions, restore the previous managed/unmanaged state:
#pragma managed(pop)

Użyj następujących makr:

-
ExcludeFromCodeCoverage(ExclusionName, L"NazwaFunkcji");

ExcludeSourceFromCodeCoverage(ExclusionName, L"SourceFilePath");
  • ExclusionName jest dowolnym unikatową nazwę.

  • NazwaFunkcji jest nazwą funkcji w pełni kwalifikowana.Może zawierać symboli wieloznacznych.Na przykład aby wykluczyć wszystkie funkcje klasy, należy napisaćMyNamespace::MyClass::*

  • SourceFilePath jest ścieżką lokalną lub UNC pliku .cpp.Może zawierać symboli wieloznacznych.Poniższy przykład nie obejmuje wszystkie pliki z określonego katalogu:\\MyComputer\Source\UnitTests\*.cpp

  • #include <CodeCoverage\CodeCoverage.h>

  • Miejsce wywołania makr wykluczeń w globalnej przestrzeni nazw, nie w ramach dowolnego obszaru nazw lub klasy.

  • Można umieścić wyłączenia w pliku kodu testu jednostki lub pliku kodu aplikacji.

  • Wykluczenia musi zostać skompilowany jako kod niezarządzany (w trybie macierzystym), ustawiając opcję kompilatora lub za pomocą #pragma managed(off).

[!UWAGA]

Wyłączenie funkcji C + +/ CLI kod, zastosuj atrybut [System::Diagnostics::CodeAnalysis::ExcludeFromCodeCoverage] do funkcji.To jest takie samo jak w języku C#.

Dd537628.collapse_all(pl-pl,VS.110).gifWłączając lub wyłączając dodatkowych elementów

Analizy pokrycia kodu jest wykonywana tylko dla zestawów, które są ładowane i dla których plik .pdb dostępne są w tym samym katalogu co plik .dll i .exe.Dlatego w pewnych okolicznościach można rozszerzyć zbiór zestawów, który znajduje się przez uzyskanie kopii plików .pdb właściwe.

Możesz skorzystać z większą kontrolę nad którym zespoły i elementy są zaznaczone do analizy pokrycia kodu przez napisanie pliku .runsettings.Na przykład można wykluczyć zestawów szczególnych typów bez konieczności dodawania atrybutów do ich klas.Aby uzyskać więcej informacji, zobacz Dostosowywanie analizy pokrycia kodu.

Analizowanie użycie kodu w usłudze kompilacji

Podczas sprawdzania kodu, testy będą uruchamiane na serwerze kompilacji, razem z innymi testami pozostałych członków zespołu.(Jeśli jeszcze tego nie ustawiono, zobacz Testy w procesie budowania) Może to być przydatne do analizy użycie kodu w służbie kompilacji, dlatego to daje obraz najaktualniejsze i najbardziej wyczerpujące pokrycia w całego projektu.Zawiera także automatyczne testy systemu i inne zakodowane testy, których zwykle nie uruchamia się na komputerach deweloperskich.

  1. W Team Explorer, otwórz Kompilacje, a następnie dodaj lub edytuj definicję kompilacji.

  2. Na stronie Proces, rozwiń węzeł Testy automatyczne, Źródło testu, Ustawienia uruchomienia.Ustaw Typ pliku ustawień uruchomienia na Pokrycie kodu włączone.

    Jeśli masz więcej niż jedną definicję źródła testu, powtórz ten krok dla każdej z nich.

    • Pole o nazwie Typ pliku ustawień uruchomienia nie istnieje.

      Pod węzłem Testy automatyczne, wybierz Zestaw testu i wybierz przycisk wielokropka [...] na końcu wiersza.W oknie dialogowym Dodaj/Edytuj przebieg testowy, w obszarze Test Runner, wybierz Visual Studio Test Runner.

Ustawianie definicji kompilacji dla pokrycia kodu

Po uruchomieniu zbudować wynikami pomiaru pokrycia kodu są dołączane do przebiegu badania i pojawiają się w podsumowaniu kompilacji.

Analizowanie użycie kodu w polu Wiersz polecenia

Aby uruchomić testy z wiersza polecenia, należy użyć vstest.console.exe.Użycie kodu jest opcja tego narzędzia.Aby uzyskać więcej informacji, zobacz Opcje wiersza poleceń VSTest.Console.exe.

  1. Uruchom program Visual Studio Developer polecenia:

    Od Windows Start menu, wybierz polecenie Wszystkie programy, Microsoft Visual Studio, Visual Studio Tools, wiersza polecenia autora.

  2. Uruchom polecenie:

    vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage

Rozwiązywanie problemów

Jeśli nie widać wyników pokrycia kodu, zobacz Pokrycie kodu — wyszukiwanie błędów.

Zasoby zewnętrzne

Dd537628.collapse_all(pl-pl,VS.110).gifWskazówki

Badania na nieprzerwane z Visual Studio 2012-rozdział 2: Testowanie jednostek: testowanie wewnątrz

Zobacz też

Koncepcje

Dostosowywanie analizy pokrycia kodu

Pokrycie kodu — wyszukiwanie błędów

Sprawdzanie kodu za pomocą jednostki badań