Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat menulis dan menjalankan pengujian unit di Visual Studio menggunakan beberapa kerangka kerja JavaScript yang lebih populer tanpa perlu beralih ke prompt perintah. Proyek Node.js dan ASP.NET Core didukung.
Kerangka kerja yang didukung adalah:
- Mocha (mochajs.org)
- Jasmine (Jasmine.github.io)
- Pita (github.com/substack/tape)
- Jest (jestjs.io)
- Vitest (vitest.dev)
Kerangka kerja yang didukung adalah:
- Mocha (mochajs.org)
- Jasmine (Jasmine.github.io)
- Pita (github.com/substack/tape)
- Jest (jestjs.io)
Jika kerangka kerja favorit Anda tidak didukung, lihat Menambahkan dukungan untuk kerangka kerja pengujian unit untuk informasi tentang menambahkan dukungan.
Menulis pengujian unit untuk proyek berbasis CLI (.esproj)
Proyek berbasis CLI yang didukung di Visual Studio 2022 berfungsi dengan Test Explorer. Vitest adalah kerangka kerja pengujian bawaan untuk proyek React dan Vue (sebelumnya Jest), dan Karma dan Jasmine digunakan untuk proyek Angular. Secara default, Anda akan dapat menjalankan pengujian default yang disediakan oleh setiap kerangka kerja, serta pengujian tambahan yang Anda tulis. Cukup tekan tombol Jalankan di Test Explorer. Jika Anda belum membuka Test Explorer, Anda dapat menemukannya dengan memilihUji Penjelajah> Uji di bilah menu.
Untuk menjalankan pengujian unit dari baris perintah, klik kanan proyek di Penjelajah Solusi, pilih Buka di Terminal, dan jalankan perintah khusus untuk jenis pengujian.
Untuk informasi tentang menyiapkan pengujian unit, lihat yang berikut ini:
Contoh sederhana juga disediakan di sini. Namun, gunakan tautan sebelumnya untuk informasi lengkap.
Menambahkan pengujian unit (.esproj)
Contoh berikut didasarkan pada templat proyek TypeScript React yang disediakan di Visual Studio 2022 versi 17.12 atau yang lebih baru, yang merupakan templat Proyek React TypeScript Mandiri . Untuk Vue dan Angular, langkah-langkahnya mirip.
Di Penjelajah Solusi, klik kanan proyek React dan pilih Edit File Proyek.
Pastikan properti berikut ada dalam file .esproj dengan nilai yang ditampilkan.
<PropertyGroup> <JavaScriptTestRoot>src\</JavaScriptTestRoot> <JavaScriptTestFramework>Vitest</JavaScriptTestFramework> </PropertyGroup>Contoh ini menentukan Vitest sebagai kerangka kerja pengujian. Anda dapat menentukan Mocha, Tape, Jasmine, atau Jest sebagai gantinya.
Elemen
JavaScriptTestRootmenentukan bahwa pengujian unit Anda akan berada di folder src akar proyek. Juga umum untuk menentukan folder pengujian .Di Penjelajah Solusi, klik kanan simpul npm dan pilih Instal paket npm baru.
Gunakan dialog penginstalan paket npm untuk menginstal paket npm berikut:
- vitest
Paket ini ditambahkan ke file package.json di bawah dependensi.
Nota
Jika Anda menggunakan jest, paket npm jest-editor-support diperlukan serta paket jest.
Di package.json, tambahkan bagian
testdi akhir bagianscripts:"scripts": { ... "test": "vitest" },Di Penjelajah Solusi, klik kanan folder src dan pilih Tambahkan>Item Baru, lalu tambahkan file baru bernama App.test.tsx.
Ini menambahkan file baru di bawah folder src.
Tambahkan kode berikut ke App.test.tsx.
import { describe, it, expect } from 'vitest'; describe('testAsuite', () => { it('testA1', async () => { expect(2).toBe(2); }); });Buka Test Explorer (pilih Test>Explorer) dan Visual Studio menemukan dan menampilkan pengujian. Jika pengujian tidak ditampilkan pada awalnya, maka bangun kembali proyek untuk me-refresh daftar.
Nota
Untuk TypeScript, jangan gunakan
outfileopsi di tsconfig.json, karena Test Explorer tidak akan dapat menemukan pengujian unit Anda. Anda dapat menggunakan opsi ,outdirtetapi pastikan bahwa file konfigurasi sepertipackage.jsondantsconfig.jsonberada di akar proyek.Penting
Jika output dari Pengujian di jendela Output menunjukkan
ReadOnlySpankesalahan selama penemuan pengujian, gunakan solusi berikut untuk masalah MSBuild yang diketahui. Untuk Visual Studio 2022, buka folder, Program Files\Microsoft Visual Studio\2022\<version>\Common7\IDE\Extensions\TestPlatform, dan ganti nama System.Memory.dll menjadi nama yang berbeda. Perbaikan ini memungkinkan penemuan pengujian.
Jalankan pengujian (.esproj)
Anda dapat menjalankan pengujian dengan mengklik tautan Jalankan Semua di Test Explorer. Atau, Anda dapat menjalankan pengujian dengan memilih satu atau beberapa pengujian atau grup, mengklik kanan, dan memilih Jalankan dari menu pintasan. Pengujian berjalan di latar belakang, dan Test Explorer secara otomatis memperbarui dan menunjukkan hasilnya. Selain itu, Anda juga dapat men-debug pengujian yang dipilih dengan mengklik kanan dan memilih Debug.
Ilustrasi berikut menunjukkan contoh dengan pengujian unit kedua ditambahkan.
Untuk beberapa kerangka kerja pengujian unit, pengujian unit biasanya dijalankan terhadap kode JavaScript yang dihasilkan.
Nota
Dalam sebagian besar skenario TypeScript, Anda dapat men-debug pengujian unit dengan mengatur titik henti dalam kode TypeScript, mengklik kanan pengujian di Test Explorer, dan memilih Debug. Dalam skenario yang lebih kompleks, seperti beberapa skenario yang menggunakan peta sumber, Anda mungkin mengalami kesulitan mencapai titik henti dalam kode TypeScript. Sebagai solusinya, coba gunakan debugger kata kunci.
Nota
Pengujian pembuatan profil dan cakupan kode saat ini tidak didukung.
Jalankan pengujian unit dari baris perintah untuk proyek berbasis CLI (.esproj)
Anda dapat menjalankan pengujian unit langsung dari baris perintah untuk kerangka kerja pengujian unit dengan cara yang sama seperti yang Anda lakukan jika Anda tidak menggunakan Visual Studio.
Anda juga dapat memilih untuk menjalankan pengujian dari baris perintah menggunakan vstest.console. Misalnya, Anda mungkin ingin menggunakan vstest.console untuk mempertahankan konsistensi dengan pengujian unit C#, atau untuk berjalan di Azure DevOps. Gunakan perintah berikut, tetapi ganti MyProj dengan nama proyek Anda.
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"
Menulis pengujian unit untuk ASP.NET Core
Untuk menambahkan dukungan untuk pengujian unit JavaScript dan TypeScript dalam proyek ASP.NET Core, Anda perlu menambahkan dukungan pengujian TypeScript, npm, dan unit ke proyek dengan menyertakan paket NuGet yang diperlukan.
Menambahkan pengujian unit (ASP.NET Core)
Contoh berikut didasarkan pada templat proyek ASP.NET Core Model-View-Controller, dan termasuk menambahkan pengujian unit Jest atau Mocha.
Buat proyekView-Controller ASP.NET Core Model.
Untuk contoh proyek, lihat Menambahkan TypeScript ke aplikasi ASP.NET Core yang sudah ada. Untuk dukungan pengujian unit, kami sarankan Anda memulai dengan templat proyek ASP.NET Core standar.
Di Penjelajah Solusi (panel kanan), klik kanan simpul proyek ASP.NET Core dan pilih Kelola Paket NuGet untuk Solusi.
Di tab Telusuri , cari paket berikut dan instal masing-masing paket:
Gunakan paket NuGet untuk menambahkan dukungan TypeScript alih-alih paket TypeScript npm.
Di Penjelajah Solusi, klik kanan simpul proyek dan pilih Edit File Proyek.
File .csproj terbuka di Visual Studio.
Tambahkan elemen berikut ke file .csproj dalam
PropertyGroupelemen .Contoh ini menentukan Jest atau Mocha sebagai kerangka kerja pengujian. Anda dapat menentukan Tape atau Jasmine sebagai gantinya.
Elemen
JavaScriptTestRootmenentukan bahwa pengujian unit Anda akan berada di folder pengujian akar proyek.<PropertyGroup> ... <JavaScriptTestRoot>tests\</JavaScriptTestRoot> <JavaScriptTestFramework>Jest</JavaScriptTestFramework> <GenerateProgramFile>false</GenerateProgramFile> </PropertyGroup>Di Penjelajah Solusi, klik kanan simpul proyek ASP.NET Core dan pilih Tambahkan > Item Baru. Pilih File Konfigurasi JSON TypeScript, lalu pilih Tambahkan.
Jika Anda tidak melihat semua templat item, pilih Perlihatkan Semua Templat, lalu pilih templat item.
Visual Studio menambahkan file tsconfig.json ke akar proyek. Anda dapat menggunakan file ini untuk mengonfigurasi opsi untuk kompilator TypeScript.
Buka tsconfig.json dan ganti kode default dengan kode berikut:
{ "compileOnSave": true, "compilerOptions": { "noImplicitAny": false, "noEmitOnError": true, "removeComments": false, "sourceMap": true, "target": "es5", "outDir": "wwwroot/js" }, "include": [ "scripts/**/*" ], "exclude": [ "node_modules", "tests" ] }Untuk Jest, jika Anda ingin mengkompilasi pengujian TypeScript ke JavaScript, hapus folder pengujian dari bagian kecualikan .
Folder skrip adalah tempat Anda dapat menempatkan kode TypeScript untuk aplikasi Anda. Untuk contoh proyek yang menambahkan kode, lihat Menambahkan TypeScript ke aplikasi ASP.NET Core yang sudah ada.
Klik kanan proyek di Penjelajah Solusi dan pilih Tambahkan>Item Baru (atau tekan Ctrl + SHIFT + A). Gunakan kotak pencarian untuk menemukan file npm, pilih File Konfigurasi npm, gunakan nama default, dan klik Tambahkan.
File package.json ditambahkan ke akar proyek.
Di Penjelajah Solusi, klik kanan simpul npm di bawah Dependensi dan pilih Instal paket npm baru.
Nota
Dalam beberapa skenario, Penjelajah Solusi mungkin tidak menampilkan simpul npm karena masalah umum yang dijelaskan di sini. Jika Anda perlu melihat simpul npm, Anda dapat membongkar proyek (klik kanan proyek dan pilih Bongkar Proyek) lalu muat ulang proyek untuk membuat simpul npm muncul kembali. Atau, Anda dapat menambahkan entri paket ke package.json dan menginstal dengan membangun proyek.
Gunakan dialog penginstalan paket npm untuk menginstal paket npm berikut:
Di package.json, tambahkan bagian
testdi akhir bagianscripts:Di Penjelajah Solusi, klik kanan folder uji dan pilih Tambahkan>Item Baru, lalu tambahkan file baru bernama App.test.tsx.
Ini menambahkan file baru di bawah folder pengujian .
Tambahkan kode berikut ke App.test.tsx.
Buka Test Explorer (pilih Uji>Windows>Test Explorer) dan Visual Studio menemukan dan menampilkan pengujian. Jika pengujian tidak ditampilkan pada awalnya, maka bangun kembali proyek untuk me-refresh daftar. Ilustrasi berikut menunjukkan contoh Jest, dengan dua file pengujian unit yang berbeda.
Nota
Untuk TypeScript, jangan gunakan
outfileopsi di tsconfig.json, karena Test Explorer tidak akan dapat menemukan pengujian unit Anda. Anda dapat menggunakan opsi ,outdirtetapi pastikan bahwa file konfigurasi sepertipackage.jsondantsconfig.jsonberada di akar proyek.Penting
Jika output dari Pengujian di jendela Output menunjukkan
ReadOnlySpankesalahan selama penemuan pengujian, gunakan solusi berikut untuk masalah MSBuild yang diketahui. Di Visual Studio 2022, buka folder, Program Files\Microsoft Visual Studio\2022\<version>\Common7\IDE\Extensions\TestPlatform, dan ganti nama System.Memory.dll menjadi nama yang berbeda. Perbaikan ini memungkinkan penemuan pengujian.
Menjalankan pengujian (ASP.NET Core)
Anda dapat menjalankan pengujian dengan mengklik tautan Jalankan Semua di Test Explorer. Atau, Anda dapat menjalankan pengujian dengan memilih satu atau beberapa pengujian atau grup, mengklik kanan, dan memilih Jalankan dari menu pintasan. Pengujian berjalan di latar belakang, dan Test Explorer secara otomatis memperbarui dan menunjukkan hasilnya. Selain itu, Anda juga dapat men-debug pengujian yang dipilih dengan mengklik kanan dan memilih Debug.
Ilustrasi berikut menunjukkan contoh Jest, dengan pengujian unit kedua ditambahkan.
Untuk beberapa kerangka kerja pengujian unit, pengujian unit biasanya dijalankan terhadap kode JavaScript yang dihasilkan.
Nota
Dalam sebagian besar skenario TypeScript, Anda dapat men-debug pengujian unit dengan mengatur titik henti dalam kode TypeScript, mengklik kanan pengujian di Test Explorer, dan memilih Debug. Dalam skenario yang lebih kompleks, seperti beberapa skenario yang menggunakan peta sumber, Anda mungkin mengalami kesulitan mencapai titik henti dalam kode TypeScript. Sebagai solusinya, coba gunakan debugger kata kunci.
Nota
Pengujian pembuatan profil dan cakupan kode saat ini tidak didukung.
Menambahkan dukungan untuk kerangka kerja pengujian unit
Anda dapat menambahkan dukungan untuk kerangka kerja pengujian tambahan dengan menerapkan logika penemuan dan eksekusi menggunakan JavaScript.
Nota
Untuk ASP.NET Core, tambahkan paket NuGet Microsoft.JavaScript.UnitTest ke proyek Anda untuk menambahkan dukungan.
Anda melakukan ini dengan menambahkan folder dengan nama kerangka kerja pengujian di bawah:
<VisualStudioFolder>\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter\TestFrameworks
Jika Anda tidak melihat NodeJsTools folder dalam proyek ASP.NET Core, tambahkan beban kerja pengembangan Node.js menggunakan Alat Penginstal Visual Studio. Beban kerja ini mencakup dukungan untuk pengujian unit JavaScript dan TypeScript.
Folder ini harus berisi file JavaScript dengan nama yang sama yang mengekspor dua fungsi berikut:
find_testsrun_tests
Untuk contoh yang baik dari find_tests dan run_tests implementasinya, lihat implementasi untuk kerangka kerja pengujian unit Mocha di:
<VisualStudioFolder>\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter\TestFrameworks\mocha\mocha.js
Penemuan kerangka kerja pengujian yang tersedia terjadi di mulai Visual Studio. Jika kerangka kerja ditambahkan saat Visual Studio sedang berjalan, mulai ulang Visual Studio untuk mendeteksi kerangka kerja. Namun Anda tidak perlu memulai ulang saat membuat perubahan pada implementasi.
Pengujian unit dalam .NET Framework
Anda tidak terbatas pada penulisan pengujian unit hanya dalam proyek Node.js dan ASP.NET Core Anda. Saat Anda menambahkan properti TestFramework dan TestRoot ke proyek C# atau Visual Basic apa pun, pengujian tersebut akan dijumlahkan dan Anda dapat menjalankannya menggunakan jendela Test Explorer.
Untuk mengaktifkan ini, klik kanan simpul proyek di Penjelajah Solusi, pilih Bongkar Proyek, lalu pilih Edit Proyek. Kemudian dalam file proyek, tambahkan dua elemen berikut ke grup properti.
Penting
Pastikan bahwa grup properti yang Anda tambahkan elemennya tidak memiliki kondisi yang ditentukan. Ini dapat menyebabkan perilaku tak terduga.
<PropertyGroup>
<JavaScriptTestRoot>tests\</JavaScriptTestRoot>
<JavaScriptTestFramework>Tape</JavaScriptTestFramework>
</PropertyGroup>
Selanjutnya, tambahkan pengujian Anda ke folder akar pengujian yang Anda tentukan, dan tes tersebut akan tersedia untuk dijalankan di jendela Test Explorer. Jika awalnya tidak muncul, Anda mungkin perlu membangun kembali proyek.
Pengujian unit .NET Core dan .NET Standard
Selain properti sebelumnya yang dijelaskan untuk .NET Framework, Anda juga perlu menginstal paket NuGet Microsoft.JavaScript.UnitTest dan mengatur properti :
<PropertyGroup>
<GenerateProgramFile>false</GenerateProgramFile>
</PropertyGroup>
Beberapa kerangka kerja pengujian mungkin memerlukan paket npm tambahan untuk deteksi pengujian. Misalnya, jest memerlukan paket npm jest-editor-support. Jika perlu, periksa dokumentasi untuk kerangka kerja tertentu.
Menulis pengujian unit dalam proyek Node.js (.njsproj)
Untuk proyek Node.js, sebelum menambahkan pengujian unit ke proyek Anda, pastikan kerangka kerja yang Anda rencanakan untuk digunakan diinstal secara lokal di proyek Anda. Ini mudah dilakukan menggunakan jendela penginstalan paket npm.
Cara yang disukai untuk menambahkan pengujian unit ke proyek Anda adalah dengan membuat folder pengujian di proyek Anda, dan mengaturnya sebagai akar pengujian di properti proyek. Anda juga perlu memilih kerangka kerja pengujian yang ingin Anda gunakan.
Anda dapat menambahkan pengujian kosong sederhana ke proyek Anda, menggunakan kotak dialog Tambahkan Item Baru . JavaScript dan TypeScript didukung dalam proyek yang sama.
Untuk pengujian unit Mocha, gunakan kode berikut:
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");
})
})
Jika Anda belum mengatur opsi pengujian unit di properti proyek, Anda harus memastikan properti Kerangka Kerja Pengujian di jendela Properti diatur ke kerangka kerja pengujian yang benar untuk file pengujian unit Anda. Ini dilakukan secara otomatis oleh templat file pengujian unit.
Nota
Opsi pengujian unit akan mengambil preferensi atas pengaturan untuk masing-masing file.
Setelah membuka Test Explorer (pilih Uji>Windows>Test Explorer), Visual Studio menemukan dan menampilkan pengujian. Jika pengujian tidak ditampilkan pada awalnya, maka bangun kembali proyek untuk me-refresh daftar.
Nota
Untuk TypeScript, jangan gunakan outdir opsi atau outfile di tsconfig.json, karena Test Explorer tidak akan dapat menemukan pengujian unit Anda.
Jalankan pengujian (Node.js)
Anda dapat menjalankan pengujian di Visual Studio atau dari baris perintah.
Menjalankan pengujian di Visual Studio
Anda dapat menjalankan pengujian dengan mengklik tautan Jalankan Semua di Test Explorer. Atau, Anda dapat menjalankan pengujian dengan memilih satu atau beberapa pengujian atau grup, mengklik kanan, dan memilih Jalankan dari menu pintasan. Pengujian berjalan di latar belakang, dan Test Explorer secara otomatis memperbarui dan menunjukkan hasilnya. Selain itu, Anda juga dapat men-debug pengujian yang dipilih dengan mengklik kanan dan memilih Debug.
Untuk TypeScript, pengujian unit dijalankan terhadap kode JavaScript yang dihasilkan.
Nota
Dalam sebagian besar skenario TypeScript, Anda dapat men-debug pengujian unit dengan mengatur titik henti dalam kode TypeScript, mengklik kanan pengujian di Test Explorer, dan memilih Debug. Dalam skenario yang lebih kompleks, seperti beberapa skenario yang menggunakan peta sumber, Anda mungkin mengalami kesulitan mencapai titik henti dalam kode TypeScript. Sebagai solusinya, coba gunakan debugger kata kunci.
Nota
Saat ini kami tidak mendukung pengujian pembuatan profil, atau cakupan kode.
Menjalankan pengujian dari baris perintah
Anda dapat menjalankan pengujian dari Developer Command Prompt untuk Visual Studio menggunakan perintah berikut:
vstest.console.exe <path to project file>\NodejsConsoleApp23.njsproj /TestAdapterPath:<VisualStudioFolder>\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter
Perintah ini menunjukkan output yang mirip dengan yang berikut ini:
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
Nota
Jika Anda mendapatkan kesalahan yang menunjukkan bahwa vstest.console.exe tidak dapat ditemukan, pastikan Anda telah membuka Prompt Perintah Pengembang dan bukan perintah biasa.