Megosztás a következőn keresztül:


Útmutató: Első tesztelési fejlesztés a Használatból generálás funkcióval

Ez a témakör bemutatja, hogyan használható a Használatból generálás funkció, amely támogatja az első tesztelési fejlesztést.

Az első tesztelési fejlesztés a szoftvertervezés egyik megközelítése, amelyben először termékspecifikációk alapján kell egységteszteket írni, majd megírni a tesztek sikerességéhez szükséges forráskódot. A Visual Studio támogatja az első tesztelési fejlesztést azáltal, hogy új típusokat és tagokat hoz létre a forráskódban, amikor először hivatkozik rájuk a tesztesetekben, mielőtt definiálja őket.

A Visual Studio minimális megszakítással hozza létre az új típusokat és tagokat a munkafolyamatban. Típusokhoz, metódusokhoz, tulajdonságokhoz, mezőkhöz vagy konstruktorokhoz létrehozhat csonkokat anélkül, hogy elhagyná az aktuális helyet a kódban. Amikor megnyit egy párbeszédpanelt a típusgenerálási lehetőségek megadásához, a fókusz azonnal visszakerül az aktuális megnyitott fájlba, amikor a párbeszédpanel bezárul.

A Használatból generálás funkció a Visual Studióval integrálható tesztelési keretrendszerekkel használható. Ebben a témakörben a Microsoft egységtesztelési keretrendszerét mutatjuk be.

Megjegyzés:

A cikkben található utasítások a Visual Studióban elérhető interaktív fejlesztési felület (IDE) legújabb verzióját mutatják be. Előfordulhat, hogy a számítógép különböző neveket vagy helyeket jelenít meg a felhasználói felület egyes elemeihez. Előfordulhat, hogy a Visual Studio egy másik verzióját vagy különböző környezeti beállításokat használ. További információ: Ideszemélyre szabása.

Windows Osztálytár projekt és tesztprojekt létrehozása

  1. C# vagy Visual Basic nyelven hozzon létre egy új Windows Osztálytár projektet. Nevezze el úgy, hogy GFUDemo_VB vagy GFUDemo_CS, attól függően, hogy melyik nyelvet használja.

  2. A Megoldáskezelőben kattintson a jobb gombbal a megoldás ikonra a tetején, és válassza azÚj projekthozzáadása> lehetőséget.

  3. Hozzon létre egy új Unit Test Project (.NET-keretrendszer) projektet.

Hivatkozás hozzáadása az Osztálytár projekthez

  1. A Megoldáskezelőben az egységteszt projekt alatt kattintson a jobb gombbal a Hivatkozások bejegyzésre , és válassza a Hivatkozás hozzáadása lehetőséget.

  2. A Referenciakezelő párbeszédpanelen válassza a Projektek lehetőséget, majd válassza ki az osztálytárprojektet.

  3. Az OK gombra kattintva zárja be a Referenciakezelő párbeszédpanelt.

  4. Mentse a megoldást. Most már készen áll a tesztek írására.

Új osztály létrehozása egységtesztből

  1. A tesztprojekt egy UnitTest1 nevű fájlt tartalmaz. Kattintson duplán erre a fájlra a Megoldáskezelőben a kódszerkesztőben való megnyitásához. Létrejött egy tesztosztály és egy tesztelési módszer.

  2. Keresse meg az osztály UnitTest1 deklarációt, és nevezze át a következőre AutomobileTest: .

    Megjegyzés:

    Az IntelliSense mostantól két alternatívát kínál az IntelliSense utasítás befejezéséhez: a befejezési módot és a javaslati módot. Javaslat mód használata olyan helyzetekhez, amikor az osztályok és a tagok használatban vannak a definiálásuk előtt. Ha meg van nyitva egy IntelliSense ablak, a Ctrl AltSpacebillentyűkombinációval++ válthat a befejezési mód és a javaslati mód között. További információt az IntelliSense használata című témakörben talál. A javaslati mód segít, ha a következő lépésben gépel Automobile .

  3. Keresse meg a metódust TestMethod1() , és nevezze át a következőre DefaultAutomobileIsInitializedCorrectly(): . Ebben a metódusban hozzon létre egy új, az Automobilealábbi képernyőképeken látható osztálypéldányt. Megjelenik egy hullámos aláhúzás, amely fordítási idejű hibát jelez, és a bal margón megjelenik egy Gyorsművelet hibajelző, vagy közvetlenül a hullámos aláhúzás alatt, ha rámutat.

    Gyorsműveletek a Visual Basicben

    Gyorsműveletek a C-ben#

  4. Válassza ki vagy kattintson a Gyorsműveletek villanykörtére. Megjelenik egy hibaüzenet, amely azt jelzi, hogy a típus Automobile nincs definiálva. Néhány megoldást is bemutatunk.

  5. Kattintson az Új típus létrehozása gombra a Típus létrehozása párbeszédpanel megnyitásához. Ez a párbeszédpanel olyan beállításokat biztosít, amelyek magukban foglalják a típus egy másik projektben való generálásának lehetőségét.

  6. A Projekt listában kattintson a GFUDemo_VB vagy a GFUDemo_CS elemre, és utasítsa a Visual Studiót, hogy a tesztprojekt helyett adja hozzá a fájlt az osztálytár projekthez. Ha még nincs kijelölve, válassza az Új fájl létrehozása lehetőséget, és nevezze el Automobile.cs vagy Automobile.vb.

    Új típus létrehozása párbeszédpanel

  7. Kattintson az OK gombra a párbeszédpanel bezárásához és az új fájl létrehozásához.

  8. A Megoldáskezelőben a GFUDemo_VB vagy GFUDemo_CS projektcsomópont alatt ellenőrizze, hogy az új Automobile.vb vagy Automobile.cs fájl létezik-e. A kódszerkesztőben a fókusz még mindig benne AutomobileTest.DefaultAutomobileIsInitializedCorrectlyvan, ami lehetővé teszi a teszt írását minimális megszakítással.

Tulajdonságcsomó létrehozása

Tegyük fel, hogy a termék specifikációja azt állítja, hogy az Automobile osztálynak két nyilvános tulajdonsága van elnevezve Model és TopSpeed. Ezeket a tulajdonságokat az alapértelmezett konstruktor alapértelmezett értékeivel "Not specified"-1 kell inicializálni. Az alábbi egységteszt ellenőrzi, hogy az alapértelmezett konstruktor a tulajdonságokat a megfelelő alapértelmezett értékekre állítja-e be.

  1. Adja hozzá a következő kódsort a DefaultAutomobileIsInitializedCorrectly tesztmetódushoz.

    Assert.IsTrue((myAuto.Model == "Not specified") && (myAuto.TopSpeed == -1));
    
  2. Mivel a kód két nem definiált tulajdonságra hivatkozik, hullámos aláhúzás jelenik meg a Model és TopSpeed alatt. Vigye az egérmutatót a Model fölé, és kattintson a Gyorsműveletek hiba ikonra, ezután kattintson a 'Automobile.Model' tulajdonság létrehozása lehetőségre.

  3. Azonos módon hozzon létre tulajdonságcsomót a TopSpeed tulajdonsághoz.

    Az Automobile osztályban az új tulajdonságok típusait helyesen a környezetből következtetik ki.

Hozzon létre csonkot egy új konstruktor számára

Most létrehozunk egy tesztmetódust, amely egy konstruktor-csonkot hoz létre, hogy inicializálja a Model és a TopSpeed tulajdonságokat. Később további kódot fog hozzáadni a teszt elvégzéséhez.

  1. Adja hozzá az alábbi további vizsgálati módszert az AutomobileTest osztályhoz.

    [TestMethod]
    public void AutomobileWithModelNameCanStart()
    {
        string model = "Contoso";
        int topSpeed = 199;
        Automobile myAuto = new Automobile(model, topSpeed);
    }
    
  2. Kattintson a gyorsműveletek hibalámpára a piros hullámos kapcsoló alatt, majd kattintson a Konstruktor létrehozása elemre az "Automobile" (Autó) területen.

    Automobile Az osztályfájlban figyelje meg, hogy az új konstruktor megvizsgálta a konstruktorhívásban használt helyi változók nevét, olyan tulajdonságokat talált, amelyek neve megegyezik az Automobile osztályban, és a konstruktor törzsében megadott kódot az argumentumértékek és TopSpeed tulajdonságok Model tárolásához.

  3. Az új konstruktor létrehozása után hullámos aláhúzás jelenik meg az alapértelmezett konstruktor meghívása alatt a következőben DefaultAutomobileIsInitializedCorrectly: . A hibaüzenet azt jelzi, hogy az Automobile osztálynak nincs olyan konstruktora, amely nulla argumentumot vesz igénybe. Ha olyan explicit alapértelmezett konstruktort szeretne létrehozni, amely nem rendelkezik paraméterekkel, kattintson a Gyorsműveletek hibalámpára, majd a Konstruktor létrehozása elemre az "Automobile" (Autó) területen.

Metódus keretének létrehozása

Tegyük fel, hogy a specifikáció szerint egy új AutomobileIsRunning állapotba helyezhető, ha a Model és TopSpeed tulajdonságai nem az alapértelmezett értékekre vannak beállítva.

  1. Adja hozzá a következő sorokat a AutomobileWithModelNameCanStart metódushoz.

    myAuto.Start();
    Assert.IsTrue(myAuto.IsRunning == true);
    
  2. Kattintson a Gyorsműveletek hibajelző villanykörtére a myAuto.Start metódushívásnál, majd az 'Automobile.Start' metódus létrehozása parancsra.

  3. Kattintson a tulajdonság Gyorsműveletek villanykörte elemére IsRunning , majd az Automobile.IsRunning tulajdonság létrehozása parancsra.

    Az Automobile osztály most egy elnevezett Start() metódust és egy nevű tulajdonságot IsRunningtartalmaz.

A tesztek futtatása

  1. A Teszt menüben válassza azÖsszes tesztfuttatása lehetőséget>.

    AMinden tesztfuttatása> parancs az aktuális megoldáshoz írt tesztkörnyezetekben futtatja az összes tesztet. Ebben az esetben két teszt van, és mindkettő a vártnak megfelelően meghiúsul. A DefaultAutomobileIsInitializedCorrectly teszt meghiúsul, mert a Assert.IsTrue feltétel visszatér False. A AutomobileWithModelNameCanStart teszt meghiúsul, mert az Start osztály metódusa Automobile kivételt jelez.

    A Teszteredmények ablak az alábbi ábrán látható.

    Sikertelen teszteredmények

  2. A Teszteredmények ablakban kattintson duplán az egyes teszteredmények sorára az egyes tesztek helyének eléréséhez.

A forráskód implementálása

  1. Adja hozzá a következő kódot az alapértelmezett konstruktorhoz, hogy az , TopSpeed és IsRunning a Modeltulajdonságok mind inicializálva legyenek a megfelelő alapértelmezett értékhez "Not specified", -1és False (vagy false C# esetén).

    public Automobile()
    {
        this.Model = "Not specified";
        this.TopSpeed = -1;
        this.IsRunning = true;
    }
    
  2. A Start metódus meghívásakor a IsRunning jelölőt csak akkor állítsa igaz értékre, ha a Model vagy TopSpeed tulajdonság értéke nem az alapértelmezett érték. Távolítsa el a NotImplementedException metódus törzsét, és adja hozzá a következő kódot.

    public void Start()
    {
        if (this.Model != "Not specified" || this.TopSpeed != -1)
            this.IsRunning = true;
        else
            this.IsRunning = false;
    }
    

Futtassa újra a teszteket

  • A Teszt menüben mutasson a Futtatás pontra, majd kattintson a Minden teszt parancsra.

    Ezúttal a tesztek átmennek. A Teszteredmények ablak az alábbi ábrán látható.

    Sikeres teszteredmények