Udostępnij za pośrednictwem


Wskazówki: wcześniejsze testowanie obsługi przy użyciu funkcji generowania na podstawie sposobu użycia

W tym temacie przedstawiono sposób użycia Generowanie na podstawie sposobu użycia funkcji, która obsługuje rozwoju pierwszego badania.

Pierwszy test rozwoju to podejście do projektowania oprogramowania, w którym najpierw napisać testy na podstawie specyfikacji produktu, a następnie napisać kod źródłowy, który jest wymagany do wykonania testów powiodła się.Visual Studioobsługuje test pierwszego rozwoju poprzez generowanie nowych typów oraz członków kod źródłowy, najpierw adres ich przypadków badania przed są zdefiniowane.

Visual Studiogeneruje nowe typy i członków z minimalne przerwy do przepływu pracy.Można utworzyć procedur wejścia dla typów, metody, właściwości, pól lub konstruktory bez opuszczania bieżącej lokalizacji w kodzie.Po otwarciu okno dialogowe, aby określić opcje generowania typu fokus natychmiast zwraca do bieżącego otwartego pliku, po zamknięciu okna dialogowego.

Funkcja generowania z użycia może być używana z ramami badania, które integrują się z Visual Studio.W tym temacie obrazuje ramowej badania jednostki firmy Microsoft.

[!UWAGA]

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Tworzenie projektu biblioteki klas systemu Windows i projekt badania

  1. W Visual C# lub Visual Basic, Utwórz nowy projekt biblioteki klas systemu Windows.Nadaj mu nazwę GFUDemo_VB lub GFUDemo_CS, w zależności od języka, którego używasz.

  2. W Solution Explorer, kliknij prawym przyciskiem myszy ikonę roztwór u góry, wskaż polecenie Dodaj, a następnie kliknij przycisk Nowy projekt.W Nowy projekt dialogowe, w Typów projektów okienku po lewej stronie, kliknij Test.

  3. W szablonów okienka, kliknij Projektu badania jednostki i zaakceptuj domyślną nazwę UnitTestProject1.Na poniższej ilustracji przedstawiono okno dialogowe pojawiają się w Visual C#.W Visual Basic, okno dialogowe wygląda podobnie.

    Okno dialogowe Nowy projekt

    Okno dialogowe nowego projektu testu

  4. Kliknij OK zamknąć Nowy projekt okno dialogowe.Teraz jesteś gotowy do rozpoczęcia pisania testów

Do generowania nowej klasy z test jednostki

  1. Projekt badania zawiera plik o nazwie UnitTest1.Kliknij dwukrotnie ten plik w Solution Explorer , aby go otworzyć w edytorze kodu.Test klasy i metody badania zostały wygenerowane.

  2. Znajdź deklarację klasy UnitTest1 i zmień, aby AutomobileTest.W języku C# Jeśli UnitTest1() Konstruktor, Zmień, aby AutomobileTest().

    [!UWAGA]

    Technologia IntelliSense teraz przewiduje dwie alternatywy uzupełnianie instrukcji IntelliSense: tryb zakończenia i Tryb sugestia.W sytuacjach, w których klasy i elementy są stosowane przed są zdefiniowane, należy użyć trybu sugestię.Po otwarciu okna IntelliSense, można nacisnąć klawisze CTRL + ALT + SPACJA powoduje przełączenie między tryb zakończenia i tryb sugestię.Zobacz Korzystanie z IntelliSense Aby uzyskać więcej informacji.Tryb sugestia pomoże podczas wpisywania Automobile w następnym kroku.

  3. Zlokalizuj TestMethod1() metody i zmień, aby DefaultAutomobileIsInitializedCorrectly().Ta metoda, Utwórz nowe wystąpienie klasy o nazwie Automobile, jak pokazano w poniższej ilustracji.Pojawi się linią falistą, która wskazuje błąd kompilacji i tagu inteligentnego, który pojawia się pod nazwą typu.Dokładna lokalizacja tych tagów inteligentnych zmienia się w zależności od tego, czy używasz Visual Basic lub Visual C#.

    Visual Basic

    Podkreślenia tagu w języku Visual Basic

    Visual C#

    Podkreślenia tagu w języku C#

  4. Wskaźnik myszy nad tag inteligentny, aby wyświetlić komunikat o błędzie, informujący o tym, że żaden typ o nazwie Automobile jeszcze zdefiniowany.Kliknij przycisk tagu inteligentnego lub naciśnij klawisze CTRL +.(CTRL + okresu), aby otworzyć menu skrótów wygenerować z użycia, jak pokazano w poniższej ilustracji.

    Visual Basic

    Menu kontekstowe tagu w języku Visual Basic

    Visual C#

    Menu kontekstowe tagu w języku C#

  5. Teraz masz dwie możliwości.Można kliknąć przycisk Generuj ' samochód klasy ' do tworzenia nowego pliku w projekcie badania i go wypełnić puste klasę o nazwie Automobile.Jest to szybki sposób, aby utworzyć nową klasę w nowego pliku, który ma domyślną modyfikatory dostępu w bieżącym projekcie.Można także kliknąć Generowanie nowego typu otworzyć Wygenerować nowy typ okno dialogowe.Zapewnia to opcje, które obejmują wprowadzenie klasy w istniejącym pliku i dodawanie pliku do innego projektu.

    Kliknij Generowanie nowego typu otworzyć Wygenerować nowy typ okno dialogowe, które przedstawiono na poniższej ilustracji.W Projekt listy, kliknij przycisk GFUDemo_VB lub GFUDemo_CS do Visual Studio dodać plik do projektu kodu źródłowego zamiast tego projektu.

    Generowanie nowego typu, okno dialogowe

    Okno dialogowe Nowy typ Generowanie

  6. Kliknij OK , aby zamknąć okno dialogowe i utworzyć nowy plik.

  7. W Solution Explorer, Szukaj w węźle projektu GFUDemo_VB lub GFUDemo_CS, aby sprawdzić, czy nowe Automobile.vb lub Automobile.cs plik istnieje.W edytorze kodu fokus jest nadal w AutomobileTest.DefaultAutomobileIsInitializedCorrectly.Można kontynuować napisać taki test minimum przerwy.

Aby wygenerować skrótowej własności

  • Założono specyfikacji produktu stanowi, że Automobile klasa ma dwie właściwości publicznej o nazwie Model i TopSpeed.Te właściwości musi być zainicjowany z wartościami domyślnymi "Not specified" i -1 przez konstruktora domyślnego.Następujące badania jednostki sprawdzi, że domyślnego konstruktora ustawia właściwości domyślne poprawne wartości.

    Dodaj następujący wiersz kodu DefaultAutomobileIsInitializedCorrectly.

    Assert.IsTrue((myAuto.Model = "Not specified") And (myAuto.TopSpeed = -1))
    
    Assert.IsTrue((myAuto.Model == "Not specified") && (myAuto.TopSpeed == -1));
    

    Ponieważ kod odwołuje się do dwóch niezdefiniowanych właściwości na Automobile, tagu inteligentnego.Kliknij przycisk tagu inteligentnego do Model i kliknij przycisk skrótowych właściwość Generate.Generowanie skrótowej właściwości dla TopSpeed właściwość również.

    W Automobile klasy, rodzaje nowe właściwości są poprawnie wywnioskowane z kontekstu.

    Na następującej ilustracji pokazano menu skrótów tagu inteligentnego.

    Visual Basic

    Generowanie właściwości menu kontekstowego w języku Visual Basic

    Visual C#

    Generowanie właściwości menu kontekstowego w języku C#

Aby zlokalizować kod źródłowy

  • Użyj Przejdź do funkcji, aby przejść do pliku Automobile.cs lub Automobile.vb kodu źródłowego, dzięki czemu można sprawdzić, że nowe właściwości zostały wygenerowane.

    Przejdź do funkcja umożliwia szybkie wprowadź ciąg tekstowy, na przykład wpisz nazwę lub część nazwy i przejdź do żądanej lokalizacji, klikając element na liście wyników.

    Otwórz Przejdź do okno dialogowe, klikając w edytorze kodu i naciskając klawisze CTRL +, (CTRL + przecinek).W polu tekstowym wpisz samochodu.Kliknij samochodu klasy na liście, a następnie kliknij przycisk OK.

    Przejdź do okno przedstawiono na poniższej ilustracji.

    Nawiguj do okna

    Nawiguj do okno

Aby wygenerować skrótowej dla konstruktora new

  1. W tej metodzie badawczej wygeneruje zostanie zainicjowany tylko z konstruktora Model i TopSpeed można określić wartości właściwości.Później należy dodać więcej kodu do wykonania testu.Dodaj następującą metodę badań dodatkowych do użytkownika AutomobileTest klasy.

    <TestMethod()> Public Sub AutomobileWithModelNameCanStart()
        Dim model As String = "Contoso" 
        Dim topSpeed As Integer = 199
        Dim myAuto As New Automobile(model, topSpeed)
    End Sub
    
    [TestMethod]
    public void AutomobileWithModelNameCanStart()
    {
        string model = "Contoso";
        int topSpeed = 199;
        Automobile myAuto = new Automobile(model, topSpeed);
    }
    
  2. Kliknij przycisk tagu inteligentnego mocy nowego konstruktora klasy, a następnie kliknij przycisk skrótowych konstruktora Generate.W Automobile plik klasy, należy zauważyć, że konstruktora new zbadała nazwy zmiennych lokalnych, które są używane w wywołaniu konstruktora, znaleźć właściwości, które mają takie same nazwy w Automobile klasy i kod podany w treści konstruktora do przechowywania wartości argumentu w Model i TopSpeed właściwości.(W Visual Basic, _model i _topSpeed pól w konstruktora new są polami oporowe niejawnie zdefiniowanych dla Model i TopSpeed właściwości.)

  3. Po wygenerowaniu konstruktora new linią falistą pojawia się w obszarze wywołanie konstruktora domyślnego w DefaultAutomobileIsInitializedCorrectly.Komunikat o błędzie stwierdza, że Automobile klasa ma nie używającej zero argumentów konstruktora.Aby wygenerować konstruktora domyślnego jawne, który nie ma parametrów, kliknij tag inteligentny, a następnie kliknij przycisk skrótowych konstruktora Generate.

Aby wygenerować skrótowej metody

  1. Założono, że specyfikacja Państwa nowy Automobile można umieścić w stan działania, jeśli jego Model i TopSpeed właściwości są ustawione na coś innego niż domyślne wartości.Dodaj następujące wiersze do AutomobileWithModelNameCanStart metody.

    myAuto.Start()
    Assert.IsTrue(myAuto.IsRunning = True)
    
    myAuto.Start();
    Assert.IsTrue(myAuto.IsRunning == true);
    
  2. Kliknij przycisk tagu inteligentnego do myAuto.Start metody wywołania, a następnie kliknij przycisk skrótowych metoda generowanie.

  3. Kliknij przycisk tagu inteligentnego do IsRunning właściwość, a następnie kliknij przycisk skrótowych właściwość Generuj.Automobile Klasy zawiera teraz następujący kod.

    Public Class Automobile
        Sub New(ByVal model As String, ByVal topSpeed As Integer)
            _model = model
            _topSpeed = topSpeed
        End Sub 
        Sub New()
            ' TODO: Complete member initialization  
        End Sub 
    
        Property Model() As String 
        Property TopSpeed As Integer 
        Property IsRunning As Boolean 
        Sub Start()
            Throw New NotImplementedException
        End Sub 
    End Class
    
    public class Automobile
    {
        public string Model { get; set; }
        public int TopSpeed { get; set; }
    
        public Automobile(string model, int topSpeed)
        {
            this.Model = model;
            this.TopSpeed = topSpeed;
        }
    
        public Automobile()
        {
            // TODO: Complete member initialization
        }
    
        public void Start()
        {
            throw new NotImplementedException();
        }
    
        public bool IsRunning { get; set; }
    }
    

Aby uruchomić testy

  1. Na Test jednostki menu, wskaż Uruchomić testy, a następnie kliknij przycisk Wszystkie testy.To polecenie uruchamia wszystkie testy w wszystkich ram test napisanych dla bieżącego rozwiązania.

    W tym przypadku istnieją dwa testy i obaj nie, zgodnie z oczekiwaniami.DefaultAutomobileIsInitializedCorrectly Test zakończy się niepowodzeniem, ponieważ Assert.IsTrue warunkiem zwraca False.AutomobileWithModelNameCanStart Test zakończy się niepowodzeniem, ponieważ Start metodę w Automobile klasy zgłasza wyjątek.

    Wyniki testu okno przedstawiono na poniższej ilustracji.

    Okno wyniki badania

    Wyniki testów, które nie powiodło się

  2. W Wyników badania okno, kliknij dwukrotnie w każdym wierszu wynik badania, aby przejść do lokalizacji każdego testu uszkodzenia.

Wprowadzenie kodu źródłowego

  1. Dodaj następujący kod do domyślnego konstruktora tak że Model, TopSpeed i IsRunning właściwości są inicjowane poprawne domyślne wartości z "Not specified", -1, i True (true).

    Sub New()
        Model = "Not specified"
        TopSpeed = -1
        IsRunning = True 
    End Sub
    
    public Automobile()
    {
        this.Model = "Not specified";
        this.TopSpeed = -1;
        this.IsRunning = true;
    }
    
  2. Gdy Start wywoływana jest metoda, należy go ustawić IsRunning flagi na wartość true tylko wtedy, gdy Model lub TopSpeed właściwości są ustawione na coś innego niż ich wartości domyślne.Usuń NotImplementedException z metody ciała i Dodaj następujący kod.

    Sub Start()
        If Model <> "Not specified" Or TopSpeed <> -1 Then
            IsRunning = True 
        Else
            IsRunning = False 
        End If 
    End Sub
    
    public void Start()
    {
        if (this.Model != "Not specified" || this.TopSpeed != -1)
            this.IsRunning = true;
        else 
            this.IsRunning = false;
    }
    

Aby ponownie uruchomić testy

  • Na Test menu, wskaż uruchomić, a następnie kliknij przycisk Wszystkie testy w roztworze.Tym razem testy przechodzą.Wyniki testu okno przedstawiono na poniższej ilustracji.

    Okno wyniki badania

    Wyniki testów, które są przekazywane

Zobacz też

Koncepcje

Generowanie na podstawie sposobu użycia

Weryfikowanie kodu przy użyciu testów jednostkowych

Inne zasoby

Pisanie kodu w edytorze kodu i tekstu

Korzystanie z IntelliSense