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
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.
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.
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
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
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.
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.
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
Visual C#
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
Visual C#
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
Klepněte na tlačítko OK zavřete dialogové okno a vytvořte nový soubor.
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
Visual 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
Generování se zakázaným inzerováním pro konstruktoru new
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); }
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.)
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í
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);
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í.
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ů
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 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
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; }
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
Viz také
Koncepty
Ověření kódu pomocí zkoušky jednotky