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_VBneboGFUDemo_CSpodle 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
UnitTest1a 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í
Automobilev 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
Automobilenení 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í podModelaTopSpeed. Najeďte myšíModela zvolte žárovku s chybou Rychlé akce a pak zvolte Generovat vlastnost Automobile.Model.Stejným způsobem vygenerujte zástup pro vlastnost
TopSpeed.AutomobileVe 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'.
AutomobileV 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íModelaTopSpeed.Po vygenerování nového konstruktoru se pod voláním výchozího konstruktoru v
DefaultAutomobileIsInitializedCorrectlyobjeví vlnovité podtržení. Chybová zpráva uvádí, žeAutomobiletří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.Startvolání metody a potom klikněte na Vytvořit metodu 'Automobile.Start'.Klikněte na žárovku Rychlých akcí u
IsRunningvlastnosti a potom klepněte na Generovat vlastnost 'Automobile.IsRunning'.Třída
Automobilenyní 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
DefaultAutomobileIsInitializedCorrectlyselže, protožeAssert.IsTruepodmínka vrátíFalse. TestAutomobileWithModelNameCanStartselže, protožeStartmetoda veAutomobiletří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
ModelTopSpeedIsRunningbyly všechny vlastnosti inicializovány do správných výchozích"Not specified"hodnot ,-1aFalse(nebofalsepro jazyk C#).Když je volána metoda
Start, měla by nastavit příznakIsRunningna true pouze v případě, že vlastnostiModelneboTopSpeedjsou nastaveny na něco jiného, než je jejich výchozí hodnota. OdstraňteNotImplementedExceptionz 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.