Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp wordt gedemonstreert hoe u de functie Genereren uit gebruik gebruikt, die ondersteuning biedt voor test-first-ontwikkeling.
Test-first-ontwikkeling is een benadering van softwareontwerp waarbij u eerst eenheidstests schrijft op basis van productspecificaties en vervolgens de broncode schrijft die nodig is om de tests te laten slagen. Visual Studio ondersteunt test-first-ontwikkeling door nieuwe typen en leden in de broncode te genereren wanneer u deze voor het eerst in uw testcases verwijst voordat ze worden gedefinieerd.
Visual Studio genereert de nieuwe typen en leden met minimale onderbreking van uw werkstroom. U kunt stubs maken voor typen, methoden, eigenschappen, velden of constructors zonder uw huidige locatie in code te verlaten. Wanneer u een dialoogvenster opent om opties voor het genereren van typen op te geven, wordt de focus onmiddellijk terug naar het huidige geopende bestand wanneer het dialoogvenster wordt gesloten.
De functie Generate From Usage kan worden gebruikt met testframeworks die zijn geïntegreerd met Visual Studio. In dit onderwerp wordt het Microsoft Unit Testing Framework gedemonstreerd.
Opmerking
De instructies in dit artikel illustreren de meest recente versie van de interactieve ontwikkelervaring (IDE) die beschikbaar is in Visual Studio. Uw computer kan verschillende namen of locaties weergeven voor sommige elementen van de gebruikersinterface. Mogelijk gebruikt u een andere versie van Visual Studio of andere omgevingsinstellingen. Zie De IDE-personaliseren voor meer informatie.
Een Windows Class Library-project en een testproject maken
Maak in C# of Visual Basic een nieuw Windows Class Library-project . Geef deze
GFUDemo_VBeen naam ofGFUDemo_CS, afhankelijk van de taal die u gebruikt.Klik in Solution Explorer met de rechtermuisknop op het oplossingspictogram bovenaan en kiesNieuw projecttoevoegen>.
Maak een nieuw Unit Test-project (.NET Framework) aan.
Een verwijzing toevoegen naar het klassebibliotheekproject
Klik in Solution Explorer onder uw eenheidstestproject met de rechtermuisknop op de vermelding Verwijzingen en kies Verwijzing toevoegen.
Selecteer Projecten in het dialoogvenster Reference Manager en selecteer vervolgens het klassebibliotheekproject.
Kies OK om het dialoogvenster Verwijzingsbeheer te sluiten.
Sla uw oplossing op. U bent nu klaar om te beginnen met het schrijven van tests.
Een nieuwe klasse genereren op basis van een eenheidstest
Het testproject bevat een bestand met de naam UnitTest1. Dubbelklik op dit bestand in Solution Explorer om het te openen in de code-editor. Er is een testklasse en testmethode gegenereerd.
Zoek de declaratie voor klasse
UnitTest1en wijzig de naam ervan inAutomobileTest.Opmerking
IntelliSense biedt nu twee alternatieven voor voltooiing van intelliSense-instructies: voltooiingsmodus en suggestiemodus. Gebruik de suggestiemodus voor situaties waarin klassen en leden worden gebruikt voordat ze worden gedefinieerd. Wanneer een IntelliSense-venster is geopend, kunt u op CtrlAlt-spatiebalk++ drukken om tussen de voltooiingsmodus en de suggestiemodus te schakelen. Zie IntelliSense gebruiken voor meer informatie. De suggestiemodus helpt u bij het typen
Automobilein de volgende stap.Zoek de methode en wijzig de
TestMethod1()naam ervan inDefaultAutomobileIsInitializedCorrectly(). Maak in deze methode een nieuw exemplaar van een klasse met de naamAutomobile, zoals wordt weergegeven in de volgende schermopnamen. Er verschijnt een golflijn die een compilatiefout aangeeft en een Snelle acties-lampje verschijnt in de linkermarge, of direct eronder als u er met de muisaanwijzer overheen gaat.
Kies of klik op de gloeilamp Snelle acties . Er wordt een foutbericht weergegeven waarin staat dat het type
Automobileniet is gedefinieerd. U krijgt ook enkele oplossingen te zien.Klik op Nieuw type genereren om het dialoogvenster Type genereren te openen. Dit dialoogvenster bevat opties voor het genereren van het type in een ander project.
Klik in de lijst Project op GFUDemo_VB of GFUDemo_CS om Visual Studio opdracht te geven om het bestand toe te voegen aan het klassebibliotheekproject in plaats van het testproject. Als dit nog niet is geselecteerd, kiest u Nieuw bestand maken en noemt u het Automobile.cs of Automobile.vb.
Klik op OK om het dialoogvenster te sluiten en het nieuwe bestand te maken.
Kijk in Solution Explorer onder het knooppunt GFUDemo_VB of GFUDemo_CS project om te controleren of het nieuwe Automobile.vb - of Automobile.cs bestand aanwezig is. De focus blijft in de code-editor in
AutomobileTest.DefaultAutomobileIsInitializedCorrectly, zodat u uw test met een minimale onderbreking kunt blijven schrijven.
Een eigenschapsstub genereren
Stel dat de productspecificatie aangeeft dat de Automobile klasse twee openbare eigenschappen heeft met de naam Model en TopSpeed. Deze eigenschappen moeten worden geïnitialiseerd met standaardwaarden van "Not specified" en -1 door de standaardconstructor. Met de volgende eenheidstest wordt gecontroleerd of de standaardconstructor de eigenschappen instelt op de juiste standaardwaarden.
Voeg de volgende coderegel toe aan de
DefaultAutomobileIsInitializedCorrectlytestmethode.Omdat de code naar twee niet-gedefinieerde eigenschappen op
Automobileverwijst, verschijnt er een golvende onderstreping onderModelenTopSpeed. Beweeg de muisaanwijzer overModel, kies de gloeilamp met snelle acties en selecteer vervolgens eigenschap 'Automobile.Model' genereren.Genereer op dezelfde manier een eigenschapstub voor de
TopSpeedeigenschap.In de
Automobileklasse worden de typen nieuwe eigenschappen correct afgeleid van de context.
Een stub genereren voor een nieuwe constructor
We gaan nu een testmethode maken waarmee een constructor-stub wordt gegenereerd om de Model en TopSpeed eigenschappen te initialiseren. Later voegt u meer code toe om de test te voltooien.
Voeg de volgende extra testmethode toe aan uw
AutomobileTestklasse.Klik op de gloeilamp Snelle Acties onder de rode kronkel, en klik vervolgens op Constructor genereren in 'Automobile'.
In het
Automobileklassebestand ziet u dat de nieuwe constructor de namen heeft onderzocht van de lokale variabelen die worden gebruikt in de constructoraanroep, eigenschappen met dezelfde namen in deAutomobileklasse heeft gevonden en code heeft opgegeven in de hoofdtekst van de constructor om de argumentwaarden in deModelenTopSpeedeigenschappen op te slaan.Nadat u de nieuwe constructor hebt gegenereerd, wordt er een golvende onderstreping weergegeven onder de aanroep naar de standaardconstructor in
DefaultAutomobileIsInitializedCorrectly. Het foutbericht geeft aan dat deAutomobileklasse geen constructor heeft die nul argumenten gebruikt. Als u een expliciete standaardconstructor wilt genereren die geen parameters heeft, klikt u op de gloeilamp Snelle acties en klikt u vervolgens op Constructor genereren in 'Automobile'.
Een stub genereren voor een methode
Stel dat de specificatie aangeeft dat een nieuwe Automobile in een IsRunning-toestand kan worden geplaatst als de Model- en TopSpeed-eigenschappen anders dan de standaardwaarden zijn ingesteld.
Voeg de volgende regels toe aan de
AutomobileWithModelNameCanStartmethode.Klik op het Snelle Acties foutlicht voor de
myAuto.Startmethode-aanroep en klik vervolgens op Genereer methode 'Automobile.Start'.Klik op de Snelle acties-gloeilamp voor de
IsRunningeigenschap en klik vervolgens op eigenschap 'Automobile.IsRunning' genereren.De
Automobileklasse bevat nu een methode met de naamStart()en een eigenschap met de naamIsRunning.
De tests uitvoeren
KiesAlle testsuitvoeren> in het menu Testen.
> Met deopdrachtAlle tests uitvoeren worden alle tests uitgevoerd in testframeworks die zijn geschreven voor de huidige oplossing. In dit geval zijn er twee tests en beide mislukken, zoals verwacht. De
DefaultAutomobileIsInitializedCorrectlytest mislukt omdat deAssert.IsTruevoorwaarde retourneertFalse. DeAutomobileWithModelNameCanStarttest mislukt omdat deStartmethode in deAutomobileklasse een uitzondering genereert.Het venster Testresultaten wordt weergegeven in de volgende afbeelding.
Dubbelklik in het venster Testresultaten op elke rij met testresultaten om naar de locatie van elke test te gaan.
De broncode implementeren
Voeg de volgende code toe aan de standaardconstructor, zodat de
ModelenIsRunningTopSpeedeigenschappen allemaal zijn geïnitialiseerd op de juiste standaardwaarden van"Not specified",-1enFalse(offalsevoor C#).Wanneer de
Startmethode wordt aangeroepen, moet deIsRunningvlag alleen true worden ingesteld als deModelofTopSpeedeigenschappen zijn ingesteld op iets anders dan de standaardwaarde. Verwijder deNotImplementedExceptionuit de hoofdtekst van de methode en voeg de volgende code toe.
Voer de tests opnieuw uit
Wijs in het menu Testen de optie Uitvoeren aan en klik vervolgens op Alle tests.
Deze keer zijn de tests geslaagd. Het venster Testresultaten wordt weergegeven in de volgende afbeelding.