Sdílet prostřednictvím


Názorný postup: Podpora první Test generovat z používání funkce

Toto téma ukazuje, jak použít Generování před využitím funkce, která podporuje vývoj první test.

Rozvoj první test je přístup k návrhu softwaru je nejdříve zapsat zkoušky jednotky na základě specifikace produktu a zapište kód původu, který je povinen provést testy úspěšné.Visual Studiopodporuje test první rozvoj generováním nových typů a členy ve zdrojovém kódu po prvním odkaz na ně v testovacích případů, než jsou definovány.

Visual Studiogeneruje nové typy a členy s minimálním vlivem na váš pracovní postup.Můžete vytvořit objekty stub pro typy, metody, vlastnosti, polí nebo konstruktory bez opuštění aktuální umístění v kódu.Když otevřete dialogové okno zadat možnosti pro generování typu fokus vrátí okamžitě aktuální otevřený soubor při zavření dialogového okna.

Generovat z používání funkce lze s test rámců, které lze integrovat s Visual Studio.V tomto tématu je prokázána rámec testování Microsoft jednotky.

[!POZNÁMKA]

Ve vašem počítači se pro některé z prvků uživatelského rozhraní sady Visual Studio mohou zobrazit jiné názvy a umístění, než jsou uvedeny v následujících pokynech. Tyto prvky jsou určeny verzí aplikace Visual Studio a použitým nastavením. Další informace naleznete v tématu Nastavení aplikace Visual Studio.

Vytvoření projektu knihovny Windows třídy a zkušební projekt

  1. V Visual C# nebo Visual Basic, vytvoření nového projektu knihovny třídy Windows.Název GFUDemo_VB nebo GFUDemo_CSv závislosti na jazyk, který používáte.

  2. V Aplikaci Solution Explorer, klepněte pravým tlačítkem na ikonu řešení nahoře, přejděte na Přidata klepněte na tlačítko Nový projekt.V Nový projekt v dialogovém okně pole Typy projektů podokně vlevo, klepněte na tlačítko Test.

  3. V šablony podokně klepněte na tlačítko Jednotka zkušební projekt a přijměte výchozí název UnitTestProject1.Následující obrázek ukazuje dialogové okno, když se objeví v Visual C#.V Visual Basic, vypadá podobně jako dialogové okno.

    Dialogové okno Nový projekt

    Dialogové okno Nový projekt testů

  4. Klepněte na tlačítko OK zavřete Nový projekt dialogové okno.Nyní jste připraveni zahájit psaní testů

Generovat nové třídy z test jednotky

  1. Zkušební projekt obsahuje soubor s názvem UnitTest1.Poklepejte na tento soubor v Aplikaci Solution Explorer otevřete Editor kódu.Třída zkoušky a zkušební metody byly generovány.

  2. Vyhledejte prohlášení pro třídu UnitTest1 a přejmenujte jej na AutomobileTest.V jazyce C# Pokud UnitTest1() konstruktoru, přejmenujte jej na AutomobileTest().

    [!POZNÁMKA]

    Technologie IntelliSense nyní nabízí dvě alternativy pro dokončení IntelliSense příkaz: režim dokončení a režim návrh.Režim návrhu pro situace, ve kterých jsou použity tříd a členů před jsou definovány.V otevřeném okně aplikace technologie IntelliSense, můžete stisknutím klávesy CTRL + ALT + MEZERNÍK přepnout mezi režimem dokončení a návrh.Další informace naleznete v tématu Pomocí technologie IntelliSense.Režim návrhu vám pomůže při psaní Automobile v dalším kroku.

  3. Vyhledejte TestMethod1() metoda a přejmenujte jej na DefaultAutomobileIsInitializedCorrectly().Uvnitř této metody vytvořit novou instanci třídy nazvanou Automobile, jak ukazuje následující ilustrace.Se objeví podtržení vlnovkou označující chybu kompilace a inteligentní značky se zobrazí pod názvem typu.Přesné umístění inteligentních značek se liší v závislosti na tom, zda používáte Visual Basic nebo Visual C#.

    Visual Basic

    Podtržení inteligentní značky v jazyce Visual Basic

    Visual C#

    Podtržení inteligentní značky v jazyce C#

  4. Ukazatel myši nad inteligentní značky se zobrazí chybová zpráva oznamující, že žádný typ s názvem Automobile dosud definována.Klepněte na inteligentní značku nebo stiskněte klávesy CTRL +.(CTRL + období) otevřete místní nabídku generovat z používání, jak ukazuje následující ilustrace.

    Visual Basic

    Místní nabídka inteligentní značky v jazyce Visual Basic

    Visual C#

    Místní nabídka inteligentní značky v jazyce C#

  5. Nyní máte dvě možnosti.Nelze klepněte na Generovat ' automobil třídy ' vytvořit nový soubor v testu projektu a naplnit s prázdnou třídu s názvem Automobile.Toto je rychle vytvořit novou třídu do nového souboru, který má výchozí modifikátory přístupu v aktuálním projektu.Můžete také klepnout na generovat nový typ otevřete Generovat nový typ dialogové okno.To poskytuje možnosti, které zahrnují uvedení v existujícím souboru třídy a přidání souboru do jiného projektu.

    Klepněte na tlačítko generovat nový typ otevřete Generovat nový typ dialogové okno, které je znázorněno na následujícím obrázku.V projektu seznam, klepněte na tlačítko GFUDemo_VB nebo GFUDemo_CS na pokyn Visual Studio přidat soubor do projektu zdrojový kód namísto zkušebního projektu.

    Nový typ dialogové okno Generovat

    Nový typ dialogové okno Generovat

  6. Klepněte na tlačítko OK zavřete dialogové okno a vytvořte nový soubor.

  7. V Aplikaci Solution Explorer, vyhledejte v uzlu GFUDemo_VB nebo GFUDemo_CS projektu ověřit, zda nový Automobile.vb nebo Automobile.cs soubor existuje.V editoru kódu je aktivní i v AutomobileTest.DefaultAutomobileIsInitializedCorrectly.Můžete pokračovat v zápisu test s minimálním přerušením.

Generovat vlastnost stub

  • Předpokládejme, že specifikace výrobku uvedeno Automobile třída má dvě veřejné vlastnosti s názvem Model a TopSpeed.Tyto vlastnosti musí být inicializován s výchozími hodnotami "Not specified" a -1 ve výchozí konstruktor.Následující test jednotky ověřte, že výchozí konstruktor nastaví vlastnosti správné výchozí hodnoty.

    Přidejte následující řádek kódu DefaultAutomobileIsInitializedCorrectly.

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

    Protože kód odkazuje na nedefinované vlastnosti Automobile, zobrazí se inteligentní značka.Klepněte na inteligentní značku pro Model a klepněte na tlačítko inzerováním generovat vlastnost.Vlastnost se zakázaným inzerováním pro generování TopSpeed vlastnost také.

    V Automobile třídy typy nové vlastnosti jsou správně odvodit z kontextu.

    Následující obrázek znázorňuje místní nabídce inteligentní značky.

    Visual Basic

    Místní nabídka Generovat vlastnost v jazyce Visual Basic

    Visual C#

    Místní nabídka Generovat vlastnost v jazyce C#

Vyhledat zdrojový kód

  • Použití Přejděte na funkce tak, že můžete ověřit, že byly generovány nové vlastnosti a přejděte na soubor Automobile.cs nebo Automobile.vb zdrojový kód.

    Přejděte na funkce umožňuje rychle zadat textový řetězec, například zadejte jméno nebo část jména a přejděte do požadovaného umístění klepnutím prvek v seznamu výsledků.

    Otevřít Přejděte na dialogové okno Editor kódu klepnutím a stisknutím CTRL +, (CTRL + čárka).Do textového pole zadejte automobilu.Klepněte automobilu třídy v seznamu a klepněte na tlačítko OK.

    Přejděte na okno je znázorněno na následujícím obrázku.

    Okno Navigovat na

    Dialogové okno Přejít na

Generování se zakázaným inzerováním pro konstruktoru new

  1. V této zkušební metodě bude generovat inzerováním konstruktor, který bude inicializovat Model a TopSpeed vlastnosti a hodnoty, které určíte.Bude později přidat další kód dokončit test.Přidat další metody pro vaše AutomobileTest třídy.

    <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. Inteligentní značky v konstruktoru třídy nový a klepněte na tlačítko inzerováním generovat konstruktoru.V Automobile soubor třídy, Všimněte si, že konstruktoru new přezkoumala názvy místních proměnných, které se používají ve volání konstruktoru, nalezeny vlastnosti, které mají stejné názvy v Automobile třídy a do těla konstruktoru ukládat hodnoty v argumentu zadaný kód Model a TopSpeed vlastnosti.(V Visual Basic, _model a _topSpeed v konstruktoru new polí jsou pole implicitně definované zálohování Model a TopSpeed vlastnosti.)

  3. Po vytvoření konstruktoru new podtržení vlnovkou se zobrazí pod volání výchozí konstruktor v DefaultAutomobileIsInitializedCorrectly.Chybová zpráva uvádí, že Automobile třídy nemá žádný konstruktor má nulovou argumenty.Chcete-li generovat explicitní výchozí konstruktor, který nemá žádné parametry, klepněte na inteligentní značku a klepněte na tlačítko inzerováním generovat konstruktoru.

Se zakázaným inzerováním pro metodu generování

  1. Předpokládejme, že specifikace uvádí nový Automobile můžete umístit do stavu spuštění, pokud jeho Model a TopSpeed vlastnosti jsou nastaveny na jinou hodnotu než výchozí hodnoty.Přidejte následující řádky a AutomobileWithModelNameCanStart metoda.

    myAuto.Start()
    Assert.IsTrue(myAuto.IsRunning = True)
    
    myAuto.Start();
    Assert.IsTrue(myAuto.IsRunning == true);
    
  2. Klepněte na inteligentní značku u myAuto.Start volat metodu a klepněte na tlačítko se zakázaným inzerováním metoda generování.

  3. Klepněte na inteligentní značku u IsRunning vlastnost a klepněte na tlačítko inzerováním generovat vlastnost.Automobile Třída nyní obsahuje následující kód.

    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; }
    }
    

Spuštění testů

  1. Na Test jednotky nabídce přejděte na Spustit testy jednotkya klepněte na tlačítko Všechny testy.Tento příkaz spustí všechny testy ve všech rámcích test vytvořených pro aktuální řešení.

    V tomto případě existují dva testy a obou nezdaří, podle očekávání.DefaultAutomobileIsInitializedCorrectly Test nezdaří, protože Assert.IsTrue podmínka vrátí False.AutomobileWithModelNameCanStart Test nezdaří, protože Start metodu Automobile třídy vyvolá výjimku.

    Výsledky testu okno je znázorněno na následujícím obrázku.

    Okno výsledky testu

    Výsledky zkoušek, které se nezdařily

  2. V Výsledky testování okno, poklepejte na každém řádku výsledku testu přejít na umístění každého testu selhání.

K provedení zdrojový kód

  1. Přidejte následující kód na výchozí konstruktor tak, Model, TopSpeed a IsRunning vlastnosti jsou inicializovány správné výchozí hodnoty z "Not specified", -1, a 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. Při Start je volána metoda, měli nastavit IsRunning příznaku na hodnotu true pouze tehdy, pokud Model nebo TopSpeed vlastnosti jsou nastaveny na jinou hodnotu než výchozí hodnota.Odebrat NotImplementedException z metody subjektu a přidejte následující kód.

    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;
    }
    

Znovu spustit testy

  • Na Test nabídce přejděte na Spustita klepněte na tlačítko Všechny testy v roztoku.Předat tuto dobu zkoušky.Výsledky testu okno je znázorněno na následujícím obrázku.

    Okno výsledky testu

    Výsledky testů, které jsou předány

Viz také

Koncepty

Generování před využitím

Ověření kódu pomocí zkoušky jednotky

Další zdroje

Psaní kódu v editoru kódu a textovém editoru

Pomocí technologie IntelliSense