Bagikan melalui


Pengujian unit JavaScript dan TypeScript di Visual Studio

Anda dapat menulis dan menjalankan pengujian unit di Visual Studio menggunakan beberapa kerangka kerja JavaScript yang lebih populer tanpa perlu beralih ke perintah. Proyek Node.js dan ASP.NET Core didukung.

Kerangka kerja yang didukung adalah:

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 didukung di Visual Studio 2022 berfungsi dengan Test Explorer. Jest adalah kerangka kerja pengujian bawaan untuk proyek React dan Vue, 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 memilihTest>Test Explorer 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.8 atau yang lebih baru, yang merupakan templat Proyek React TypeScript Mandiri. Untuk Vue dan Angular, langkah-langkahnya mirip.

  1. Di Penjelajah Solusi, klik kanan proyek React dan pilih Edit File Proyek.

  2. Pastikan properti berikut ada dalam file .esproj dengan nilai yang ditampilkan.

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

    Contoh ini menentukan Jest sebagai kerangka kerja pengujian. Anda dapat menentukan Mocha, Tape, atau Jasmine sebagai gantinya.

    Elemen JavaScriptTestRoot menentukan bahwa pengujian unit Anda akan berada di folder src akar proyek.

  3. Di Penjelajah Solusi, klik kanan simpul npm dan pilih Instal paket npm baru.

    Gunakan dialog penginstalan paket npm untuk menginstal paket npm berikut:

    • Bercanda
    • jest-editor-support

    Paket ini ditambahkan ke file package.json di bawah dependensi.

  4. Di package.json, tambahkan bagian test di akhir bagian scripts :

    "scripts": {
       ...
       "test": "jest"
    },
    
  5. 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.

  6. Tambahkan kode berikut ke App.test.tsx.

    describe('testAsuite', () => {
       it('testA1', async () => {
          expect(2).toBe(2);
       });
    });
    
  7. 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.

    Screenshot of Test Explorer test discovery (.esproj).

    Catatan

    Untuk TypeScript, jangan gunakan opsi outfile di tsconfig.json, karena Test Explorer tidak akan dapat menemukan pengujian unit Anda. Anda dapat menggunakan opsi outdir, tetapi pastikan bahwa file konfigurasi seperti package.json dan tsconfig.json berada di akar proyek.

Jalankan pengujian (.esproj)

Anda dapat menjalankan pengujian dengan mengklik link 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.

Screenshot of Test Explorer results (.esproj).

Untuk beberapa kerangka kerja pengujian unit, pengujian unit biasanya dijalankan terhadap kode JavaScript yang dihasilkan.

Catatan

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 kata kunci debugger.

Catatan

Pengujian pembuatan profil dan cakupan kode saat ini tidak didukung.

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.

  1. Buat proyek ASP.NET Core Model-View-Controller.

    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.

  2. Di Penjelajah Solusi (panel kanan), klik kanan simpul proyek ASP.NET Core dan pilih Kelola Paket NuGet untuk Solusi.

  3. Di tab Telusuri , cari paket berikut dan instal masing-masing paket:

    Gunakan paket NuGet untuk menambahkan dukungan TypeScript alih-alih paket TypeScript npm.

  4. Di Penjelajah Solusi, klik kanan simpul proyek dan pilih Edit File Proyek.

    File .csproj terbuka di Visual Studio.

  5. Tambahkan elemen berikut ke file .csproj dalam elemen PropertyGroup.

    Contoh ini menentukan Jest atau Mocha sebagai kerangka kerja pengujian. Anda dapat menentukan Tape atau Jasmine sebagai gantinya.

    Elemen JavaScriptTestRoot menentukan bahwa pengujian unit Anda akan berada di folder pengujian akar proyek.

    <PropertyGroup>
       ...
       <JavaScriptTestRoot>tests\</JavaScriptTestRoot>
       <JavaScriptTestFramework>Jest</JavaScriptTestFramework>
       <GenerateProgramFile>false</GenerateProgramFile>
    </PropertyGroup>
    
  6. 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 pengompilasi TypeScript.

  7. 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.

  8. 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.

  9. Di Penjelajah Solusi, klik kanan simpul npm di bawah Dependensi dan pilih Instal paket npm baru.

    Catatan

    Dalam beberapa skenario, Penjelajah Solusi mungkin tidak menampilkan simpul npm karena masalah umum yang dijelaskan di sini. Jika Anda perlu melihat node npm, Anda dapat membongkar proyek (klik kanan proyek dan pilih Bongkar Proyek) lalu muat ulang proyek untuk membuat node 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:

    • Bercanda
    • jest-editor-support
    • @types/jest

    Paket ini ditambahkan ke file package.json di bawah devDependencies.

     "@types/jest": "^29.5.8",
     "jest": "^29.7.0",
     "jest-editor-support": "^31.1.2"
    
  10. Di package.json, tambahkan bagian test di akhir bagian scripts :

    "scripts": {
       ...
       "test": "jest"
    },
    
  11. 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 .

  12. Tambahkan kode berikut ke App.test.tsx.

    describe('testAsuite', () => {
       it('testA1', async () => {
          expect(2).toBe(2);
       });
    });
    
  13. Buka Test Explorer (pilih Test>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.

    Screenshot of Test Explorer test discovery (ASP.NET Core).

    Catatan

    Untuk TypeScript, jangan gunakan opsi outfile di tsconfig.json, karena Test Explorer tidak akan dapat menemukan pengujian unit Anda. Anda dapat menggunakan opsi outdir, tetapi pastikan bahwa file konfigurasi seperti package.json dan tsconfig.json berada di akar proyek.

Jalankan pengujian (ASP.NET Core)

Anda dapat menjalankan pengujian dengan mengklik link 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.

Screenshot of Test Explorer results (ASP.NET Core).

Untuk beberapa kerangka kerja pengujian unit, pengujian unit biasanya dijalankan terhadap kode JavaScript yang dihasilkan.

Catatan

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 kata kunci debugger.

Catatan

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.

Catatan

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 folder NodeJsTools 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_tests
  • run_tests

Untuk contoh yang baik dari implementasi find_tests dan run_tests, 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 pada Visual Studio mulai. Jika kerangka kerja ditambahkan saat Visual Studio berjalan, hidupkan ulang Visual Studio untuk mendeteksi kerangka kerja. Namun Anda tidak perlu menghidupkan ulang saat membuat perubahan pada implementasi.

Pengujian unit di .NET Framework

Anda tidak terbatas pada pengujian unit penulisan 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 node 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 yang tidak 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 yang didukung editor jest. 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 dipasang 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 atur sebagai akar pengujian di properti proyek. Anda juga perlu memilih kerangka kerja pengujian yang ingin Anda gunakan.

Screenshot of set test root and test framework.

Anda dapat menambahkan pengujian kosong sederhana ke proyek Anda, menggunakan kotak dialog Tambahkan Item Baru. JavaScript dan TypeScript didukung dalam proyek yang sama.

Screenshot of how to add new unit test.

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.

Screenshot of choosing Test Framework.

Catatan

Opsi pengujian unit akan mengambil preferensi atas pengaturan untuk file individual.

Setelah membuka Test Explorer (pilih Test>Windows>Test Explorer), Visual Studio menemukan dan menampilkan pengujian. Jika pengujian tidak ditampilkan pada awalnya, maka bangun kembali proyek untuk me-refresh daftar.

Screenshot of Test Explorer.

Catatan

Untuk TypeScript, jangan gunakan opsi outdir 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 link 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.

Catatan

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 kata kunci debugger.

Catatan

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

Catatan

Jika Anda mendapatkan kesalahan yang menunjukkan bahwa vstest.console.exe tidak dapat ditemukan, pastikan Anda telah membuka Developer Command Prompt dan bukan perintah biasa.