Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
- Mokka (mochajs.org)
- Jázmin (Jasmine.github.io)
- Tape (github.com/substack/tape)
- Jest (jestjs.io)
- Vitest (vitest.dev)
A támogatott keretrendszerek a következők:
- Mokka (mochajs.org)
- Jázmin (Jasmine.github.io)
- Tape (github.com/substack/tape)
- Jest (jestjs.io)
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.
A Megoldáskezelőben kattintson a jobb gombbal a React projektre, és válassza a Projektfájl szerkesztéselehetőséget.
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
JavaScriptTestRootelem azt határozza meg, hogy az egységtesztek a projektgyökér src mappájában lesznek. Gyakori a teszt mappa megadása is.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.
A package.jsonvégén adja hozzá a
testszakaszt ascriptsszakaszhoz."scripts": { ... "test": "vitest" },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.
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); }); });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.
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 aoutdirlehetőséget, de győződjön meg arról, hogy az olyan konfigurációs fájlok, mint apackage.jsonés atsconfig.jsona projekt gyökérkönyvtárában találhatók.Fontos
Ha a Kimenet ablakban a Tesztek kimenete hibát jelez
ReadOnlySpana 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ó.
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.
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.
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.
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.
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.
Adja hozzá a következő elemeket a .csproj fájlhoz a
PropertyGroupelemben.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
JavaScriptTestRootelem 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>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.
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.
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.
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:
A package.jsonvégén adja hozzá a
testszakaszt ascriptsszakaszhoz.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.
Adja hozzá az alábbi kódot App.test.tsx.
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.
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 aoutdirlehetőséget, de győződjön meg arról, hogy az olyan konfigurációs fájlok, mint apackage.jsonés atsconfig.jsona projekt gyökérkönyvtárában találhatók.Fontos
Ha a Kimenet ablakban a Tesztek kimenete hibát jelez
ReadOnlySpana 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.
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_testsrun_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.
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.
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.
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.
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.