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


JavaScript és TypeScript tesztelési egység a Visual Studióban

Az egységteszteket a Visual Studióban a népszerűbb JavaScript-keretrendszerek használatával is megírhatja és futtathatja anélkül, hogy parancssorra kellene váltania. A Node.js és ASP.NET Core-projektek egyaránt támogatottak.

A támogatott keretrendszerek a következők:

A támogatott keretrendszerek a következők:

Ha a kedvenc keretrendszere nem támogatott, a támogatás hozzáadásával kapcsolatos információkért tekintse meg az egységteszt-keretrendszer támogatásának hozzáadása című témakört.

Egységtesztek írása cli-alapú projekthez (.esproj)

A Visual Studio 2022-ben támogatott CLI-alapú projektek a Test Explorerrel működnek. A Vitest a React- és Vue-projektek (korábban Jest) beépített tesztelési keretrendszere, a Karma és a Jasmine pedig Angular-projektekhez használható. Alapértelmezés szerint futtathatja az egyes keretrendszerek által biztosított alapértelmezett teszteket, valamint az ön által írt további teszteket. Csak nyomja le a Futtatás gombot a Test Explorerben. Ha még nem nyitotta meg a Test Explorert, a menüsávon válassza Test>Test Explorer lehetőséget.

Ha egységteszteket szeretne futtatni a parancssorból, kattintson a jobb gombbal a projektre a Megoldáskezelőben, válassza a Megnyitás a Terminálterületen lehetőséget, és futtassa a teszttípusra vonatkozó parancsot.

Az egységtesztek beállításával kapcsolatos információkért tekintse meg a következőket:

Itt egy egyszerű példát is bemutatunk. A teljes információkhoz azonban használja az előző hivatkozásokat.

Egységteszt hozzáadása (.esproj)

Az alábbi példa a Visual Studio 2022 17.12-es vagy újabb verziójában elérhető TypeScript React projektsablonon alapul, amely a Különálló TypeScript React Project sablon. A Vue és az Angular esetében a lépések hasonlóak.

  1. A Megoldáskezelőben kattintson a jobb gombbal a React projektre, és válassza a Projektfájl szerkesztéselehetőséget.

  2. Győződjön meg arról, hogy a következő tulajdonságok szerepelnek a .esproj fájlban a megjelenített értékekkel.

    <PropertyGroup>
      <JavaScriptTestRoot>src\</JavaScriptTestRoot>
      <JavaScriptTestFramework>Vitest</JavaScriptTestFramework>
    </PropertyGroup> 
    

    Ez a példa a Vitestet adja meg tesztelési keretrendszerként. Ehelyett megadhatja a Mocha, a Tape, a Jasmine vagy a Jest nevet.

    A JavaScriptTestRoot elem azt határozza meg, hogy az egységtesztek a projektgyökér src mappájában lesznek. Gyakori a teszt mappa megadása is.

  3. A Megoldáskezelőben kattintson a jobb gombbal az npm csomópontra, és válassza az Új npm-csomagok telepítéselehetőséget.

    Az npm-csomag telepítési párbeszédpaneljén telepítse a következő npm-csomagokat:

    • vitest

    Ez a csomag hozzáadódik a package.json fájlhoz a függőségek alatt.

    Jegyzet

    Ha jestet használ, a jest-editor-support npm csomagra és a jest csomagra is szükség van.

  4. A package.jsonvégén adja hozzá a test szakaszt a scripts szakaszhoz.

    "scripts": {
       ...
       "test": "vitest"
    },
    
  5. A Megoldáskezelőben kattintson a jobb gombbal az src mappára, és válassza a >Új elem hozzáadásalehetőséget, majd adjon hozzá egy App.test.tsxnevű új fájlt.

    Ezzel hozzáadja az új fájlt az src mappához.

  6. Adja hozzá az alábbi kódot App.test.tsx.

    import { describe, it, expect } from 'vitest';
    
    describe('testAsuite', () => {
       it('testA1', async () => {
          expect(2).toBe(2);
       });
    });
    
  7. Nyissa meg a Test Explorert (válassza Test>Test Explorer) lehetőséget, és a Visual Studio felderíti és megjeleníti a teszteket. Ha a tesztek kezdetben nem jelennek meg, építse újra a projektet a lista frissítéséhez.

    Képernyőkép a Test Explorer tesztfelderítéséről (.esproj).

    Jegyzet

    TypeScript esetén ne használja a outfiletsconfig.jsonlehetőséget, mert a Test Explorer nem fogja tudni megtalálni az egységteszteket. Használhatja a outdir lehetőséget, de győződjön meg arról, hogy az olyan konfigurációs fájlok, mint a package.json és a tsconfig.json a projekt gyökérkönyvtárában találhatók.

    Fontos

    Ha a Kimenet ablakban a Tesztek kimenete hibát jelez ReadOnlySpan a tesztfelderítés során, használja az alábbi kerülő megoldást egy ismert MSBuild-probléma esetén. A Visual Studio 2022-ben nyissa meg a Program Files\Microsoft Visual Studio\2022\version<\>Common7\IDE\Extensions\TestPlatform mappát, és nevezze át System.Memory.dll másik névre. Ez a javítás lehetővé teszi a tesztfelderítést.

Tesztek futtatása (.esproj)

A teszteket a Test Explorer Az összes futtatása hivatkozásra kattintva futtathatja. Vagy futtassa a teszteket úgy, hogy kiválaszt egy vagy több tesztet vagy csoportot, jobb gombbal kattint, majd a helyi menüben a Futtatás lehetőséget választja. A tesztek a háttérben futnak, és a Test Explorer automatikusan frissíti és megjeleníti az eredményeket. Emellett a kiválasztott tesztek hibakereséséhez kattintson a jobb gombbal, és válassza Hibakeresésilehetőséget.

Az alábbi ábrán egy második egységteszttel kiegészített példa látható.

Képernyőkép a Test Explorer eredményeiről (.esproj).

Egyes egységtesztelési keretrendszerek esetében az egységtesztek általában a létrehozott JavaScript-kódon futnak.

Jegyzet

A legtöbb TypeScript-forgatókönyvben hibakeresést végezhet egy egységtesztben, ha beállít egy töréspontot a TypeScript-kódban, a tesztre a Jobb gombbal a Test Explorerben kattint, és kiválasztja Hibakeresésilehetőséget. Összetettebb forgatókönyvekben, például forrástérképeket használó forgatókönyvekben előfordulhat, hogy nehézséget okoz a töréspontok elérése a TypeScript-kódban. Kerülő megoldásként próbálja meg használni a debugger kulcsszót.

Jegyzet

A profilkészítési tesztek és a kódlefedettség jelenleg nem támogatott.

Egységtesztek futtatása parancssori-felületű projekt (.esproj) parancssorából

Az egységteszteket közvetlenül az egységtesztelési keretrendszer parancssorából is futtathatja ugyanúgy, mint ha nem a Visual Studiót használná.

Dönthet úgy is, hogy a vstest.console használatával futtatja a teszteket a parancssorból. Előfordulhat például, hogy a vstest.console használatával konzisztenciát szeretne fenntartani a C# egységtesztekkel, vagy az Azure DevOpsban szeretne futni. Használja a következő parancsot, de cserélje le MyProj a projekt nevére.

vstest.console .\MyProj.esproj /TestAdapterPath:"C:\Program Files\Microsoft Visual Studio\18\Enterprise\Common7\IDE\Extensions\Microsoft\JavaScript"
vstest.console .\MyProj.esproj /TestAdapterPath:"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Extensions\Microsoft\JavaScript"

Írjon egységteszteket az ASP.NET Core-hoz

Ha támogatást szeretne adni a JavaScript és a TypeScript egységteszteléséhez egy ASP.NET Core-projektben, hozzá kell adnia a TypeScript, az npm és az egységtesztelés támogatását a projekthez a szükséges NuGet-csomagok hozzáadásával.

Egységteszt hozzáadása (ASP.NET Core)

Az alábbi példa a ASP.NET Core Model-View-Controller projektsablonon alapul, és tartalmaz egy Jest- vagy Mocha-egységtesztet.

  1. Hozzon létre egy ASP.NET Core Model-View-Controller projektet.

    Példaprojekt: TypeScript hozzáadása meglévő ASP.NET Core-alkalmazáshoz. Az egységtesztelés támogatásához javasoljuk, hogy egy standard ASP.NET Core-projektsablonnal kezdjen.

  2. A Megoldáskezelőben (jobb oldali ablaktáblán) kattintson a jobb gombbal a ASP.NET Core projektcsomópontra, és válassza a Megoldáshoz készült NuGet-csomagok kezeléselehetőséget.

  3. A Tallózás lapon keresse meg a következő csomagokat, és telepítse azokat:

    A NuGet-csomag használatával adja hozzá a TypeScript-támogatást az npm TypeScript-csomag helyett.

  4. A Megoldáskezelőben kattintson a jobb gombbal a projektcsomópontra, és válassza a Projektfájl szerkesztéselehetőséget.

    Megnyílik a .csproj fájl a Visual Studióban.

  5. Adja hozzá a következő elemeket a .csproj fájlhoz a PropertyGroup elemben.

    Ez a példa a Jestet vagy a Mochát határozza meg tesztelési keretrendszerként. Ahelyett megadhatja, hogy Tape vagy Jasmine legyen.

    A JavaScriptTestRoot elem azt határozza meg, hogy az egységtesztek a projektgyökér tesztek mappájában lesznek.

    <PropertyGroup>
       ...
       <JavaScriptTestRoot>tests\</JavaScriptTestRoot>
       <JavaScriptTestFramework>Jest</JavaScriptTestFramework>
       <GenerateProgramFile>false</GenerateProgramFile>
    </PropertyGroup>
    
  6. A Megoldáskezelőben kattintson a jobb gombbal a ASP.NET Core projektcsomópontra, és válassza > Új elem hozzáadásalehetőséget. Válassza a TypeScript JSON-konfigurációs fájl, majd válassza a Hozzáadáslehetőséget.

    Ha nem látja az összes elemsablont, válassza Az összes sablon megjelenítéselehetőséget, majd válassza ki az elemsablont.

    A Visual Studio hozzáadja a tsconfig.json fájlt a projekt gyökeréhez. Ezzel a fájllal konfigurálhatja a TypeScript-fordítóhoz beállításokat.

  7. Nyissa meg tsconfig.json, és cserélje le az alapértelmezett kódot a következő kódra:

    {
      "compileOnSave": true,
      "compilerOptions": {
         "noImplicitAny": false,
         "noEmitOnError": true,
         "removeComments": false,
         "sourceMap": true,
         "target": "es5",
         "outDir": "wwwroot/js"
      },
      "include": [
        "scripts/**/*"
      ],
      "exclude": [
       "node_modules",
       "tests"
      ]
    }
    

    A Jest esetében, ha TypeScript-teszteket szeretne JavaScriptre fordítani, távolítsa el a teszteket mappát a kizárási szakaszból.

    A szkriptek mappában helyezheti el az alkalmazás TypeScript-kódját. A kódokat felveszõ példaprojektekért lásd: TypeScript hozzáadása meglévő ASP.NET Core-alkalmazáshoz.

  8. Kattintson a jobb gombbal a projektre a Megoldáskezelőben, és válassza a >Új elem hozzáadása (vagy nyomja le Ctrl + SHIFT + A). A keresőmezővel keresse meg az npm-fájlt, válassza ki az npm konfigurációs fájl, használja az alapértelmezett nevet, és kattintson a hozzáadása elemre.

    A program hozzáad egy package.json fájlt a projekt gyökeréhez.

  9. A Megoldáskezelőben kattintson a jobb gombbal az npm csomópontra a Függőségek csoportban, és válassza Új npm-csomagok telepítéselehetőséget.

    Jegyzet

    Bizonyos esetekben előfordulhat, hogy a Megoldáskezelő nem jeleníti meg az npm csomópontot az itt ismertetett ismert probléma miatt,. Ha meg kell jelennie az npm csomópontnak, eltávolíthatja a projektet (kattintson a jobb gombbal a projektre, és válassza a Projekt eltávolítása) lehetőséget, majd töltse be újra a projektet az npm csomópont újbóli megjelenítéséhez. Alternatívaként hozzáadhatja a csomagbejegyzéseket a package.json-hez, majd a projekt felépítésével telepítheti.

    Az npm-csomag telepítési párbeszédpaneljén telepítse a következő npm-csomagokat:

    • tréfa
    • jest-editor-support
    • @types/jest

    Ezek a csomagok a devDependencies alatti package.json fájlba kerülnek.

     "@types/jest": "^29.5.8",
     "jest": "^29.7.0",
     "jest-editor-support": "^31.1.2"
    
  10. A package.jsonvégén adja hozzá a test szakaszt a scripts szakaszhoz.

    "scripts": {
       ...
       "test": "jest"
    },
    
  11. A Megoldáskezelőben kattintson a jobb gombbal a teszt mappára, és válassza >Új elem hozzáadásalehetőséget, majd adjon hozzá egy új fájlt App.test.tsx.

    Ezzel hozzáadja az új fájlt a teszt mappához.

  12. Adja hozzá az alábbi kódot App.test.tsx.

    describe('testAsuite', () => {
       it('testA1', async () => {
          expect(2).toBe(2);
       });
    });
    
  13. Nyissa meg a Test Explorert (válassza Tesztelés>Windows>Test Explorer) lehetőséget, és a Visual Studio felderíti és megjeleníti a teszteket. Ha a tesztek kezdetben nem jelennek meg, építse újra a projektet a lista frissítéséhez. Az alábbi ábra a Jest-példát mutatja be két különböző egységtesztfájllal.

    Test Explorer-tesztfelderítés képernyőképe (ASP.NET Core).

    Jegyzet

    TypeScript esetén ne használja a outfiletsconfig.jsonlehetőséget, mert a Test Explorer nem fogja tudni megtalálni az egységteszteket. Használhatja a outdir lehetőséget, de győződjön meg arról, hogy az olyan konfigurációs fájlok, mint a package.json és a tsconfig.json a projekt gyökérkönyvtárában találhatók.

    Fontos

    Ha a Kimenet ablakban a Tesztek kimenete hibát jelez ReadOnlySpan a tesztfelderítés során, használja az alábbi kerülő megoldást egy ismert MSBuild-probléma esetén. A Visual Studio 2022-ben nyissa meg a Program Files\Microsoft Visual Studio\2022\<version>\Common7\IDE\Extensions\TestPlatform mappát, és nevezze át aSystem.Memory.dll másik névre. Ez a javítás lehetővé teszi a tesztfelderítést.

Tesztek futtatása (ASP.NET Core)

A teszteket a Test Explorer Az összes futtatása hivatkozásra kattintva futtathatja. Vagy futtassa a teszteket úgy, hogy kiválaszt egy vagy több tesztet vagy csoportot, jobb gombbal kattint, majd a helyi menüben a Futtatás lehetőséget választja. A tesztek a háttérben futnak, és a Test Explorer automatikusan frissíti és megjeleníti az eredményeket. Emellett a kiválasztott tesztek hibakereséséhez kattintson a jobb gombbal, és válassza Hibakeresésilehetőséget.

Az alábbi ábrán a Jest-példa látható egy második egységteszt hozzáadásával.

A Test Explorer eredményeinek képernyőképe (ASP.NET Core).

Egyes egységtesztelési keretrendszerek esetében az egységtesztek általában a létrehozott JavaScript-kódon futnak.

Jegyzet

A legtöbb TypeScript-forgatókönyvben hibakeresést végezhet egy egységtesztben, ha beállít egy töréspontot a TypeScript-kódban, a tesztre a Jobb gombbal a Test Explorerben kattint, és kiválasztja Hibakeresésilehetőséget. Összetettebb forgatókönyvekben, például forrástérképeket használó forgatókönyvekben előfordulhat, hogy nehézséget okoz a töréspontok elérése a TypeScript-kódban. Kerülő megoldásként próbálja meg használni a debugger kulcsszót.

Jegyzet

A profilkészítési tesztek és a kódlefedettség jelenleg nem támogatott.

Egységtesztelési keretrendszer támogatásának hozzáadása

A felderítési és végrehajtási logika JavaScript használatával történő implementálásával további tesztelési keretrendszereket is támogathat.

Jegyzet

A ASP.NET Core esetében adja hozzá a NuGet-csomagot Microsoft.JavaScript.UnitTest a projekthez támogatás hozzáadásához.

Ezt úgy teheti meg, hogy hozzáad egy mappát a tesztelési keretrendszer nevével a következő területen:

<VisualStudioFolder>\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter\TestFrameworks

Ha nem látja a NodeJsTools mappát egy ASP.NET Core-projektben, adja hozzá a Node.js fejlesztési számítási feladatot a Visual Studio Installer használatával. Ez a számítási feladat támogatja a JavaScript és a TypeScript egységtesztelését.

Ennek a mappának egy azonos nevű JavaScript-fájlt kell tartalmaznia, amely a következő két függvényt exportálja:

  • find_tests
  • run_tests

A find_tests és a run_tests implementációk jó példájáért tekintse meg a Mocha egységtesztelési keretrendszer implementációját a következő témakörben:

<VisualStudioFolder>\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter\TestFrameworks\mocha\mocha.js

Az elérhető tesztelési keretrendszerek felderítése a Visual Studio indításakor történik. Ha a Visual Studio futtatása közben hozzáad egy keretrendszert, indítsa újra a Visual Studiót a keretrendszer észleléséhez. Az implementáció módosításakor azonban nem kell újraindulnia.

Egységtesztek a .NET-keretrendszerben

Nem csak a Node.js és ASP.NET Core-projektekben írhat egységteszteket. Amikor hozzáadja a TestFramework és a TestRoot tulajdonságokat bármely C# vagy Visual Basic projekthez, a rendszer számba veszi ezeket a teszteket, és futtathatja őket a Test Explorer ablakban.

Ennek engedélyezéséhez kattintson a jobb gombbal a projektcsomópontjára a Megoldáskezelőben, válassza a Projekt kirakása, majd a Projekt szerkesztéselehetőséget. Ezután a projektfájlban adja hozzá a következő két elemet egy tulajdonságcsoporthoz.

Fontos

Győződjön meg arról, hogy az elemeket hozzáadni kívánt tulajdonságcsoport nem rendelkezik megadott feltétellel. Ez váratlan viselkedést okozhat.

<PropertyGroup>
    <JavaScriptTestRoot>tests\</JavaScriptTestRoot>
    <JavaScriptTestFramework>Tape</JavaScriptTestFramework>
</PropertyGroup>

Ezután adja hozzá a teszteket a megadott teszt gyökérmappához, és azok a Tesztkezelő ablakban futtathatók lesznek. Ha kezdetben nem jelennek meg, előfordulhat, hogy újra kell építenie a projektet.

Egységteszt .NET Core és .NET Standard

A .NET-keretrendszer előző tulajdonságai mellett telepítenie kell a NuGet-csomagot Microsoft.JavaScript.UnitTest, és be kell állítania a tulajdonságot:

<PropertyGroup>
    <GenerateProgramFile>false</GenerateProgramFile>
</PropertyGroup>

Egyes tesztelési keretrendszerek további npm-csomagokat igényelhetnek a tesztészleléshez. A jesthez például a jest-editor-support npm csomag szükséges. Szükség esetén ellenőrizze az adott keretrendszer dokumentációját.

Egységtesztek írása Node.js projektben (.njsproj)

Node.js projektek esetében, mielőtt egységteszteket ad a projekthez, győződjön meg arról, hogy a használni kívánt keretrendszer helyileg van telepítve a projektben. Ez egyszerűen elvégezhető az npm-csomag telepítési ablakánakhasználatával.

Az egységtesztek projekthez való hozzáadásának elsődleges módja egy teszt mappa létrehozása a projektben, és a projekttulajdonságok tesztgyökerének beállítása. Ki kell választania a használni kívánt tesztelési keretrendszert is.

A tesztgyökér és a tesztelési keretrendszer beállítása képernyőképe.

Az Új elem hozzáadása párbeszédpanelen egyszerű üres teszteket adhat hozzá a projekthez. A JavaScript és a TypeScript is támogatott ugyanabban a projektben.

Képernyőkép az új egységteszt hozzáadásáról.

Mocha-egységteszthez használja a következő kódot:

var assert = require('assert');

describe('Test Suite 1', function() {
    it('Test 1', function() {
        assert.ok(true, "This shouldn't fail");
    })

    it('Test 2', function() {
        assert.ok(1 === 1, "This shouldn't fail");
        assert.ok(false, "This should fail");
    })
})

Ha még nem állította be az egységtesztelési beállításokat a projekt tulajdonságai között, győződjön meg arról, hogy a Test Framework tulajdonság a Tulajdonságok ablakban a megfelelő tesztelési keretrendszerre van beállítva az egységtesztfájlokhoz. Ezt automatikusan elvégzik az egységtesztfájl-sablonok.

Képernyőkép a Test Framework kiválasztásáról.

Jegyzet

Az egységteszt beállításai elsőbbséget élveznek az egyes fájlok beállításaival szemben.

A Test Explorer megnyitása után (válassza Tesztelés>Windows>Test Explorer) lehetőséget, a Visual Studio felderíti és megjeleníti a teszteket. Ha a tesztek kezdetben nem jelennek meg, építse újra a projektet a lista frissítéséhez.

Test Explorer képernyőképe.

Jegyzet

TypeScript esetén ne használja a outdiroutfiletsconfig.jsonbeállítást, mert a Test Explorer nem fogja tudni megtalálni az egységteszteket.

Tesztek futtatása (Node.js)

Teszteket futtathat a Visual Studióban vagy a parancssorból.

Tesztek futtatása a Visual Studióban

A teszteket a Test Explorer Az összes futtatása hivatkozásra kattintva futtathatja. Vagy futtassa a teszteket úgy, hogy kiválaszt egy vagy több tesztet vagy csoportot, jobb gombbal kattint, majd a helyi menüben a Futtatás lehetőséget választja. A tesztek a háttérben futnak, és a Test Explorer automatikusan frissíti és megjeleníti az eredményeket. Emellett a kiválasztott tesztek hibakereséséhez kattintson a jobb gombbal, és válassza Hibakeresésilehetőséget.

TypeScript esetén az egységtesztek a létrehozott JavaScript-kódon futnak.

Jegyzet

A legtöbb TypeScript-forgatókönyvben hibakeresést végezhet egy egységtesztben, ha beállít egy töréspontot a TypeScript-kódban, a tesztre a Jobb gombbal a Test Explorerben kattint, és kiválasztja Hibakeresésilehetőséget. Összetettebb forgatókönyvekben, például forrástérképeket használó forgatókönyvekben előfordulhat, hogy nehézséget okoz a töréspontok elérése a TypeScript-kódban. Kerülő megoldásként próbálja meg használni a debugger kulcsszót.

Jegyzet

Jelenleg nem támogatjuk a profilkészítési teszteket vagy a kódlefedettségeket.

Tesztek futtatása a parancssorból

A teszteket a Visual Studio fejlesztői parancssorából futtathatja a következő paranccsal:

vstest.console.exe <path to project file>\NodejsConsoleApp23.njsproj /TestAdapterPath:<VisualStudioFolder>\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter

Ez a parancs a következőhöz hasonló kimenetet jelenít meg:

Microsoft (R) Test Execution Command Line Tool Version 15.5.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...
Processing: NodejsConsoleApp23\NodejsConsoleApp23\UnitTest1.js
  Creating TestCase:NodejsConsoleApp23\NodejsConsoleApp23\UnitTest1.js::Test Suite 1 Test 1::mocha
  Creating TestCase:NodejsConsoleApp23\NodejsConsoleApp23\UnitTest1.js::Test Suite 1 Test 2::mocha
Processing finished for framework of Mocha
Passed   Test Suite 1 Test 1
Standard Output Messages:
 Using default Mocha settings
 1..2
 ok 1 Test Suite 1 Test 1

Failed   Test Suite 1 Test 2
Standard Output Messages:
 not ok 1 Test Suite 1 Test 2
   AssertionError [ERR_ASSERTION]: This should fail
       at Context.<anonymous> (NodejsConsoleApp23\NodejsConsoleApp23\UnitTest1.js:10:16)

Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.
Test Run Failed.
Test execution time: 1.5731 Seconds

Jegyzet

Ha hibaüzenet jelenik meg, amely azt jelzi, hogy vstest.console.exe nem található, győződjön meg arról, hogy a fejlesztői parancssort nyitotta meg, nem pedig egy szokásos parancssort.