Návod: vývoj pro první test pomocí funkce generovat z použití

Toto téma ukazuje, jak použít funkci Generovat z použití , která podporuje vývoj na prvním testu.

Vývoj pro první test je přístup k návrhu softwaru, ve kterém jste nejprve zapisovali testy jednotek na základě specifikací produktu, a pak napíšete zdrojový kód, který je požadován k úspěšnému provedení testů. Visual Studio podporuje vývoj na prvním testu tím, že generuje nové typy a členy ve zdrojovém kódu při jejich prvním odkazování v testovacích případech, než jsou definované.

Visual Studio generuje nové typy a členy s minimálním přerušením pracovního postupu. Můžete vytvořit zástupné procedury pro typy, metody, vlastnosti, pole nebo konstruktory, aniž byste opustili aktuální umístění v kódu. Když otevřete dialogové okno pro zadání možností pro generování typů, při zavření dialogového okna se fokus vrátí hned na aktuální otevřený soubor.

Funkci Generovat z použití lze použít s testovacími architekturami, které jsou integrovány s Visual Studio. V tomto tématu je znázorněno rozhraní testování částí společnosti Microsoft.

Poznámka

Váš počítač může zobrazit jiné názvy nebo umístění pro některé prvky uživatelského rozhraní sady Visual Studio v tomto článku. Můžete použít jinou edici sady Visual Studio nebo jiné nastavení prostředí. Další informace najdete v tématu Přizpůsobení integrovaného vývojového prostředí (IDE).

vytvoření projektu knihovny tříd Windows a testovacího projektu

  1. v jazyce C# nebo Visual Basic vytvořte nový projekt knihovny tříd Windows . Pojmenujte ji GFUDemo_VB nebo GFUDemo_CS , podle toho, který jazyk používáte.

  2. v Průzkumník řešení klikněte pravým tlačítkem myši na ikonu řešení v horní části a vyberte možnost přidat > nový Project.

  3. vytvořte nový projekt testování částí Project (.NET Framework) .

    následující ilustrace znázorňuje nové dialogové okno Project pro šablony jazyka C#.

    šablona Project testování částí

Přidat odkaz na projekt knihovny tříd

  1. V Průzkumník řešení v rámci projektu testování částí klikněte pravým tlačítkem myši na položku odkazy a vyberte možnost Přidat odkaz.

  2. V dialogovém okně Správce odkazů vyberte projekty a potom vyberte projekt knihovny tříd.

  3. Kliknutím na tlačítko OK zavřete dialogové okno Správce odkazů .

  4. Uložte své řešení. Teď jste připraveni začít psát testy.

Generovat novou třídu z testu jednotek

  1. Testovací projekt obsahuje soubor s názvem UnitTest1. Dvojím kliknutím na tento soubor v Průzkumník řešení otevřete v editoru kódu. Byla vygenerována testovací třída a testovací metoda.

  2. Vyhledejte deklaraci třídy UnitTest1 a přejmenujte ji na AutomobileTest .

    Poznámka

    Technologie IntelliSense nyní nabízí dvě alternativy dokončování příkazů technologie IntelliSense: režim dokončování a režim návrhu. Režim návrhu použijte pro situace, ve kterých se třídy a členy používají předtím, než budou definovány. Když je okno IntelliSense otevřené, můžete stisknout CTRL + + + MEZERNÍK pro přepínání mezi režimem dokončení a režimem návrhu. Další informace najdete v tématu použití technologie IntelliSense . Režim návrhu vám pomůže při psaní Automobile v dalším kroku.

  3. Vyhledejte TestMethod1() metodu a přejmenujte ji na DefaultAutomobileIsInitializedCorrectly() . V rámci této metody vytvořte novou instanci třídy s názvem Automobile , jak je znázorněno na následujících snímcích obrazovky. Zobrazí se vlnové podtržení, které indikuje chybu při kompilaci, a v levém horním rohu se objeví chybová žárovka Chyba rychlé akce , která se zobrazí na levém okraji, nebo přímo pod vlnovkou, pokud na ni najedete myší.

    Rychlé akce v Visual Basic

    Rychlé akce v jazyce C#

  4. Vyberte nebo klikněte na žárovku rychlé akce . Zobrazí se chybová zpráva s oznámením, že typ není Automobile definován. Zobrazí se také některá řešení.

  5. Kliknutím na generovat nový typ otevřete dialogové okno generovat typ . Toto dialogové okno obsahuje možnosti, které zahrnují generování typu v jiném projektu.

  6. v seznamu Project klikněte na GFUDemo _ VB nebo GFUDemo_CS pokyn Visual Studio k přidání souboru do projektu knihovny tříd namísto testovacího projektu. Pokud ještě není vybraná, vyberte vytvořit nový soubor a pojmenujte ho automobil. cs nebo automobil. vb.

    Dialogové okno generovat nový typ

  7. Kliknutím na tlačítko OK zavřete dialogové okno a vytvořte nový soubor.

  8. V Průzkumník řešení vyhledejte v uzlu GFUDemo_VB nebo GFUDemo_CS projektu, abyste ověřili, že je zde nový soubor automobil. vb nebo automobil. cs . V editoru kódu je fokus stále v AutomobileTest.DefaultAutomobileIsInitializedCorrectly , což vám umožní pokračovat v psaní testu s minimálním přerušením.

Vygenerování provizorního kódu vlastnosti

Předpokládat, že specifikace produktu uvádí, že Automobile Třída má dvě veřejné vlastnosti s názvem Model a TopSpeed . Tyto vlastnosti musí být inicializovány s výchozími hodnotami "Not specified" a -1 výchozím konstruktorem. Následující test jednotek ověří, zda výchozí konstruktor nastaví vlastnosti na jejich správné výchozí hodnoty.

  1. Do testovací metody přidejte následující řádek kódu DefaultAutomobileIsInitializedCorrectly .

    Assert.IsTrue((myAuto.Model == "Not specified") && (myAuto.TopSpeed == -1));
    
    Assert.IsTrue((myAuto.Model = "Not specified") And (myAuto.TopSpeed = -1))
    
  2. Vzhledem k tomu, že kód odkazuje na dvě nedefinované vlastnosti Automobile , zobrazí se vlnové podtržení v oblasti Model a TopSpeed . Najeďte myší Model a zvolte žárovku Chyba rychlé akce a pak zvolte Generovat vlastnost ' automobil. model '.

  3. Vygenerujte zástupnou proceduru vlastnosti pro TopSpeed vlastnost stejným způsobem.

    Ve Automobile třídě jsou typy nových vlastností správně odvozeny z kontextu.

Vygenerovat zástupnou proceduru pro nový konstruktor

Nyní vytvoříme testovací metodu, která bude generovat zástupnou proceduru konstruktoru pro Model inicializaci TopSpeed vlastností a. Později přidáte další kód pro dokončení testu.

  1. Přidejte do třídy následující další metodu testu AutomobileTest .

    [TestMethod]
    public void AutomobileWithModelNameCanStart()
    {
        string model = "Contoso";
        int topSpeed = 199;
        Automobile myAuto = new Automobile(model, topSpeed);
    }
    
    <TestMethod()> Public Sub AutomobileWithModelNameCanStart()
        Dim model As String = "Contoso"
        Dim topSpeed As Integer = 199
        Dim myAuto As New Automobile(model, topSpeed)
    End Sub
    
  2. V červené vlnovce klikněte na žárovku Chyba rychlých akcí a pak klikněte na vytvořit konstruktor v automobilu.

    V Automobile souboru třídy si všimněte, že nový konstruktor zkontroloval názvy místních proměnných, které se používají ve volání konstruktoru, nalezené vlastnosti, které mají stejné názvy ve Automobile třídě, a dodaný kód v těle konstruktoru pro uložení hodnot argumentů do Model TopSpeed vlastností a.

  3. Po vygenerování nového konstruktoru se zobrazí podtržení vlnovkou pod voláním výchozího konstruktoru v DefaultAutomobileIsInitializedCorrectly . Chybová zpráva uvádí, že Automobile Třída nemá žádný konstruktor, který přebírá nula argumentů. Pokud chcete vygenerovat explicitní výchozí konstruktor, který nemá parametry, klikněte na žárovku chyby rychlých akcí a pak klikněte na vytvořit konstruktor v automobilu.

Generování zástupné procedury pro metodu

Předpokládá, že specifikace, která je nová, Automobile může být vložena do IsRunning stavu, pokud Model TopSpeed jsou vlastnosti a vlastností nastaveny na jinou hodnotu než výchozí hodnoty.

  1. Do metody přidejte následující řádky AutomobileWithModelNameCanStart .

    myAuto.Start();
    Assert.IsTrue(myAuto.IsRunning == true);
    
    myAuto.Start()
    Assert.IsTrue(myAuto.IsRunning = True)
    
  2. Klikněte na žárovku chyby rychlých akcí pro myAuto.Start volání metody a pak klikněte na vygenerovat metodu ' automobil. Start '.

  3. Klikněte na žárovku rychlých akcí pro IsRunning vlastnost a pak klikněte na vygenerovat vlastnost ' automobil. derunning '.

    AutomobileTřída nyní obsahuje metodu s názvem Start() a vlastnost s názvem IsRunning .

Spuštění testů

  1. V nabídce test vyberte možnost Spustit > všechny testy.

    Příkaz Spustit > všechny testy spustí všechny testy v jakémkoli testovacím rozhraní, které jsou zapsány pro aktuální řešení. V tomto případě existují dvě testy a obě selžou, podle očekávání. DefaultAutomobileIsInitializedCorrectlyTest se nezdařil, protože Assert.IsTrue podmínka se vrátí False . AutomobileWithModelNameCanStartTest se nezdařil, protože Start Metoda ve Automobile třídě vyvolá výjimku.

    Následující obrázek ukazuje výsledky testů okno.

    Výsledky testů, které selhaly

  2. V okně výsledky testů dvakrát klikněte na každý řádek výsledku testu, abyste přešli do umístění každého testu.

Implementace zdrojového kódu

  1. Do výchozího konstruktoru přidejte následující kód tak, aby Model TopSpeed IsRunning byly vlastnosti a všechny inicializovány na jejich správné výchozí hodnoty "Not specified" , -1 a False (nebo false pro C#).

    public Automobile()
    {
        this.Model = "Not specified";
        this.TopSpeed = -1;
        this.IsRunning = true;
    }
    
    Sub New()
        Model = "Not specified"
        TopSpeed = -1
        IsRunning = True
    End Sub
    
  2. Při Start volání metody by měl příznak nastavit na IsRunning hodnotu true, pouze pokud Model TopSpeed jsou vlastnosti nebo nastaveny na jinou hodnotu než výchozí hodnota. Odeberte NotImplementedException z těla metody a přidejte následující kód.

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

Spustit testy znovu

  • V nabídce test přejděte na příkaz Spustit a potom klikněte na možnost všechny testy.

    Tentokrát testy proběhnou. Následující obrázek ukazuje výsledky testů okno.

    Výsledky testů, které byly úspěšné

Viz také