Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma ukazuje, jak používat funkci Generovat z použití , která podporuje vývoj prvního testu.
Vývoj řízený testy je přístup k návrhu softwaru, ve kterém nejprve napíšete jednotkové testy na základě specifikací produktu a potom napíšete zdrojový kód, který je nutný, aby testy prošly. Visual Studio podporuje vývoj pro první testování generováním nových typů a členů ve zdrojovém kódu při prvním odkazu na ně v testovacích případech před jejich definováním.
Visual Studio generuje nové typy a členy s minimálním přerušením pracovního postupu. Zástupné procedury můžete vytvářet 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ů, fokus se po zavření dialogového okna okamžitě vrátí k aktuálnímu otevřenému souboru.
Funkci Generovat z použití lze použít s testovacími architekturami, které se integrují se sadou Visual Studio. V tomto tématu je demonstrováno rozhraní Microsoft Unit Testing Framework.
Poznámka:
Pokyny v tomto článku ilustrují nejnovější verzi interaktivního vývojového prostředí (IDE) dostupného v sadě Visual Studio. Počítač může u některých prvků uživatelského rozhraní zobrazit různé názvy nebo umístění. Možná používáte jinou verzi sady Visual Studio nebo jiné nastavení prostředí. Další informace naleznete v tématu Přizpůsobení integrovaného vývojového prostředí (IDE).
Vytvoření projektu knihovny tříd Systému Windows a testovacího projektu
V jazyce C# nebo Visual Basic vytvořte nový projekt knihovny tříd systému Windows . Pojmenujte ho
GFUDemo_VB
neboGFUDemo_CS
podle toho, jaký jazyk používáte.V Průzkumníku řešení klikněte pravým tlačítkem myši na ikonu řešení v horní části a zvolte Přidat>nový projekt.
Vytvořte nový projekt testování jednotek (.NET Framework).
Přidání odkazu na projekt knihovny tříd
V Průzkumníku řešení klikněte v rámci projektu testování jednotek pravým tlačítkem myši na položku Odkazy a zvolte Přidat odkaz.
V dialogovém okně Správce odkazů vyberte Projekty a pak vyberte projekt knihovny tříd.
Kliknutím na tlačítko OK zavřete dialogové okno Správce odkazů .
Uložte řešení. Teď jste připraveni začít psát testy.
Generování nové třídy z jednotkového testu
Testovací projekt obsahuje soubor s názvem UnitTest1. Poklikáním na tento soubor v Průzkumníku řešení ho otevřete v editoru kódu. Vygenerovala se testovací třída a testovací metoda.
Vyhledejte deklaraci třídy
UnitTest1
a přejmenujte ji naAutomobileTest
.Poznámka:
IntelliSense teď nabízí dvě alternativy pro dokončování příkazů IntelliSense: režim dokončování a režim návrhu. Režim návrhu použijte v situacích, kdy se třídy a členy používají před jejich definováním. Když je otevřené okno IntelliSense , můžete stisknutím klávesy Ctrl+Alt+Mezerník přepínat mezi režimem dokončování a režimem návrhu. Další informace najdete v tématu Použití technologie IntelliSense . Režim návrhů vám pomůže během psaní
Automobile
v dalším kroku.Vyhledejte metodu
TestMethod1()
a přejmenujte ji naDefaultAutomobileIsInitializedCorrectly()
. Uvnitř 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 vlnovkové podtržení, které označuje chybu při kompilaci, a žárovka Rychlé akce se zobrazí na levém okraji nebo přímo pod vlnovkou, pokud na ni umístíte kurzor.Zvolte nebo klikněte na žárovku Rychlé akce . Zobrazí se chybová zpráva s informacemi, že typ
Automobile
není definován. Zobrazí se vám také některá řešení.Kliknutím na Tlačítko 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 Projektu klikněte na GFUDemo_VB nebo GFUDemo_CS, abyste Visual Studio dali pokyn přidat soubor do projektu knihovny tříd místo testovacího projektu. Pokud ještě není vybraný, zvolte Vytvořit nový soubor a pojmenujte ho Automobile.cs nebo Automobile.vb.
Kliknutím na tlačítko OK zavřete dialogové okno a vytvořte nový soubor.
V Průzkumníku řešení zkontrolujte v uzlu projektu GFUDemo_VB nebo GFUDemo_CS a ověřte, že je v něm nový soubor Automobile.vb nebo Automobile.cs . V editoru kódu je fokus stále v
AutomobileTest.DefaultAutomobileIsInitializedCorrectly
, který umožňuje pokračovat v psaní testu s minimálním přerušením.
Vygenerovat zástupný kód vlastnosti
Předpokládejme, že specifikace produktu uvádí, že Automobile
třída má dvě veřejné vlastnosti pojmenované 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ěří, že výchozí konstruktor nastaví vlastnosti na správné výchozí hodnoty.
Do testovací metody přidejte následující řádek kódu
DefaultAutomobileIsInitializedCorrectly
.Vzhledem k tomu, že kód odkazuje na dvě nedefinované vlastnosti na
Automobile
, zobrazuje se vlnovkové podtržení podModel
aTopSpeed
. Najeďte myšíModel
a zvolte žárovku s chybou Rychlé akce a pak zvolte Generovat vlastnost Automobile.Model.Stejným způsobem vygenerujte zástup pro vlastnost
TopSpeed
.Automobile
Ve třídě jsou typy nových vlastností správně odvozeny z kontextu.
Vytvoření kostry pro nový konstruktor
Teď vytvoříme testovací metodu, která vygeneruje zástupce konstruktoru pro inicializaci vlastností Model
a TopSpeed
. Později přidáte další kód pro dokončení testu.
Do třídy přidejte následující další testovací metodu
AutomobileTest
.Klikněte na žárovku s chybou Rychlé akce pod červenou vlnovku a potom klepněte na tlačítko Generovat konstruktor v 'Automobile'.
Automobile
V souboru třídy si všimněte, že nový konstruktor prozkoumal názvy místních proměnných, které se používají ve volání konstruktoru, nalezl vlastnosti se stejnými názvy ve tříděAutomobile
, a v těle konstruktoru zadal kód pro uložení hodnot argumentů do vlastnostíModel
aTopSpeed
.Po vygenerování nového konstruktoru se pod voláním výchozího konstruktoru v
DefaultAutomobileIsInitializedCorrectly
objeví vlnovité podtržení. Chybová zpráva uvádí, žeAutomobile
třída nemá žádný konstruktor, který přijímá nulové argumenty. Chcete-li vygenerovat explicitní výchozí konstruktor, který nemá parametry, klepněte na žárovku s chybou Rychlé akce a potom klepněte na tlačítko Generate constructor in 'Automobile'.
Vytvořit zástupce pro metodu
Předpokládejme, že specifikace uvádí, že nový Automobile
lze vložit do IsRunning
stavu, pokud jsou jeho Model
vlastnosti TopSpeed
nastaveny na něco jiného než výchozí hodnoty.
Do metody přidejte následující řádky
AutomobileWithModelNameCanStart
.Klikněte na kontrolku chyby Rychlé akce u
myAuto.Start
volání metody a potom klikněte na Vytvořit metodu 'Automobile.Start'.Klikněte na žárovku Rychlých akcí u
IsRunning
vlastnosti a potom klepněte na Generovat vlastnost 'Automobile.IsRunning'.Třída
Automobile
nyní obsahuje metodu pojmenovanouStart()
a vlastnost s názvemIsRunning
.
Spuštění testů
V nabídce Test zvolte Spustit>všechny testy.
Příkaz Spustit>všechny testy spustí všechny testy v libovolných testovacích architekturách, které jsou napsané pro aktuální řešení. V tomto případě existují dva testy a oba selžou podle očekávání. Test
DefaultAutomobileIsInitializedCorrectly
selže, protožeAssert.IsTrue
podmínka vrátíFalse
. TestAutomobileWithModelNameCanStart
selže, protožeStart
metoda veAutomobile
třídě vyvolá výjimku.Okno Výsledky testu je znázorněno na následujícím obrázku.
V okně Výsledky testu poklikejte na každý řádek výsledků testu a přejděte na umístění každého testu.
Implementace zdrojového kódu
Do výchozího konstruktoru přidejte následující kód, aby
Model
TopSpeed
IsRunning
byly všechny vlastnosti inicializovány do správných výchozích"Not specified"
hodnot ,-1
aFalse
(nebofalse
pro jazyk C#).Když je volána metoda
Start
, měla by nastavit příznakIsRunning
na true pouze v případě, že vlastnostiModel
neboTopSpeed
jsou nastaveny na něco jiného, než je jejich výchozí hodnota. OdstraňteNotImplementedException
z těla metody a přidejte následující kód.
Znovu spusťte testy.
V nabídce Test přejděte na příkaz Spustit a klepněte na tlačítko Všechny testy.
Tentokrát testy projdou. Okno Výsledky testu je znázorněno na následujícím obrázku.