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
v jazyce C# nebo Visual Basic vytvořte nový projekt knihovny tříd Windows . Pojmenujte ji
GFUDemo_VBneboGFUDemo_CS, podle toho, který jazyk používáte.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.
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#.

Přidat odkaz na projekt knihovny tříd
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.
V dialogovém okně Správce odkazů vyberte projekty a potom vyberte projekt knihovny tříd.
Kliknutím na tlačítko OK zavřete dialogové okno Správce odkazů .
Uložte své řešení. Teď jste připraveni začít psát testy.
Generovat novou třídu z testu jednotek
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.
Vyhledejte deklaraci třídy
UnitTest1a přejmenujte ji naAutomobileTest.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í
Automobilev dalším kroku.Vyhledejte
TestMethod1()metodu a přejmenujte ji naDefaultAutomobileIsInitializedCorrectly(). V rámci této metody vytvořte novou instanci třídy s názvemAutomobile, 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ší.

Vyberte nebo klikněte na žárovku rychlé akce . Zobrazí se chybová zpráva s oznámením, že typ není
Automobiledefinován. Zobrazí se také některá řešení.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.
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.

Kliknutím na tlačítko OK zavřete dialogové okno a vytvořte nový soubor.
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.
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))Vzhledem k tomu, že kód odkazuje na dvě nedefinované vlastnosti
Automobile, zobrazí se vlnové podtržení v oblastiModelaTopSpeed. Najeďte myšíModela zvolte žárovku Chyba rychlé akce a pak zvolte Generovat vlastnost ' automobil. model '.Vygenerujte zástupnou proceduru vlastnosti pro
TopSpeedvlastnost stejným způsobem.Ve
Automobiletří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.
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 SubV červené vlnovce klikněte na žárovku Chyba rychlých akcí a pak klikněte na vytvořit konstruktor v automobilu.
V
Automobilesouboru 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 veAutomobiletřídě, a dodaný kód v těle konstruktoru pro uložení hodnot argumentů doModelTopSpeedvlastností a.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í, žeAutomobileTří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.
Do metody přidejte následující řádky
AutomobileWithModelNameCanStart.myAuto.Start(); Assert.IsTrue(myAuto.IsRunning == true);myAuto.Start() Assert.IsTrue(myAuto.IsRunning = True)Klikněte na žárovku chyby rychlých akcí pro
myAuto.Startvolání metody a pak klikněte na vygenerovat metodu ' automobil. Start '.Klikněte na žárovku rychlých akcí pro
IsRunningvlastnost a pak klikněte na vygenerovat vlastnost ' automobil. derunning '.AutomobileTřída nyní obsahuje metodu s názvemStart()a vlastnost s názvemIsRunning.
Spuštění testů
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žeAssert.IsTruepodmínka se vrátíFalse.AutomobileWithModelNameCanStartTest se nezdařil, protožeStartMetoda veAutomobiletřídě vyvolá výjimku.Následující obrázek ukazuje výsledky testů okno.

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
Do výchozího konstruktoru přidejte následující kód tak, aby
ModelTopSpeedIsRunningbyly vlastnosti a všechny inicializovány na jejich správné výchozí hodnoty"Not specified",-1aFalse(nebofalsepro C#).public Automobile() { this.Model = "Not specified"; this.TopSpeed = -1; this.IsRunning = true; }Sub New() Model = "Not specified" TopSpeed = -1 IsRunning = True End SubPři
Startvolání metody by měl příznak nastavit naIsRunninghodnotu true, pouze pokudModelTopSpeedjsou vlastnosti nebo nastaveny na jinou hodnotu než výchozí hodnota. OdeberteNotImplementedExceptionz 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.
