Bagikan melalui


Dasar-dasar pengujian unit

Periksa apakah kode Anda berfungsi seperti yang diharapkan dengan membuat dan menjalankan pengujian unit. Ini disebut pengujian unit karena Anda memecah fungsionalitas program Anda menjadi perilaku diskrit yang dapat diuji yang dapat Anda uji sebagai unit individual. Visual Studio Test Explorer menyediakan cara yang fleksibel dan efisien untuk menjalankan pengujian unit Anda dan melihat hasilnya di Visual Studio. Visual Studio menginstal kerangka kerja pengujian unit Microsoft untuk kode terkelola dan asli. Gunakan kerangka kerja pengujian unit untuk membuat pengujian unit, menjalankannya, dan melaporkan hasil pengujian ini. Jalankan ulang pengujian unit saat Anda membuat perubahan untuk menguji bahwa kode Anda masih berfungsi dengan benar. Visual Studio Enterprise dapat melakukan ini secara otomatis dengan Pengujian Unit Langsung, yang mendeteksi pengujian yang terpengaruh oleh perubahan kode Anda dan menjalankannya di latar belakang saat Anda mengetik.

Pengujian unit memiliki efek terbesar pada kualitas kode Anda ketika merupakan bagian integral dari alur kerja pengembangan perangkat lunak Anda. Segera setelah Anda menulis fungsi atau blok kode aplikasi lainnya, buat pengujian unit yang memverifikasi perilaku kode sebagai respons terhadap kasus standar, batas, dan salah data input, dan yang memeriksa asumsi eksplisit atau implisit yang dibuat oleh kode. Dengan pengembangan berbasis pengujian, Anda membuat pengujian unit sebelum menulis kode, sehingga Anda menggunakan pengujian unit sebagai dokumentasi desain dan spesifikasi fungsional.

Test Explorer juga dapat menjalankan kerangka kerja pengujian unit pihak ketiga dan sumber terbuka yang telah menerapkan antarmuka add-on Test Explorer. Anda dapat menambahkan banyak kerangka kerja ini melalui Visual Studio Extension Manager dan galeri Visual Studio. Untuk informasi selengkapnya, lihat Menginstal kerangka kerja pengujian unit pihak ketiga.

Get started

Untuk pengenalan pengujian unit yang membawa Anda langsung ke pengkodian, lihat salah satu artikel berikut:

Contoh solusi Bank

Dalam artikel ini, kami menggunakan pengembangan aplikasi fiktif yang disebut MyBank sebagai contoh. Anda tidak memerlukan kode aktual untuk mengikuti penjelasan dalam artikel ini. Metode pengujian ditulis dalam C# dan disajikan dengan menggunakan Kerangka Kerja Pengujian Unit Microsoft untuk Kode Terkelola. Namun, konsepnya mudah ditransfer ke bahasa dan kerangka kerja lain.

Solusi MyBank 2022

Upaya pertama kami pada desain untuk MyBank aplikasi mencakup komponen akun yang mewakili akun individu dan transaksinya dengan bank, dan komponen database yang mewakili fungsionalitas untuk menggabungkan dan mengelola akun individual.

Kami membuat Bank solusi yang berisi dua proyek:

  • Accounts

  • BankDB

Upaya pertama kami dalam merancang Accounts proyek berisi kelas untuk menyimpan informasi dasar tentang akun, antarmuka yang menentukan fungsionalitas umum dari semua jenis akun, seperti menyetor dan menarik aset dari akun, dan kelas yang berasal dari antarmuka yang mewakili akun pemeriksaan. Kami memulai proyek Akun dengan membuat file sumber berikut:

  • AccountInfo.cs menentukan informasi dasar untuk akun.

  • IAccount.cs mendefinisikan antarmuka standar IAccount untuk akun, termasuk metode untuk menyetorkan dan menarik aset dari akun dan untuk mengambil saldo akun.

  • CheckingAccount.cs berisi CheckingAccount kelas yang mengimplementasikan IAccount antarmuka untuk akun pemeriksaan.

Kita tahu dari pengalaman bahwa satu hal yang harus dilakukan saat melakukan penarikan dari rekening giro adalah memastikan bahwa jumlah yang ditarik kurang dari saldo rekening. Jadi kami mengambil alih IAccount.Withdraw metode dengan CheckingAccount metode yang memeriksa kondisi ini. Metode ini mungkin terlihat seperti ini:

public void Withdraw(double amount)
{
    if(m_balance >= amount)
    {
        m_balance -= amount;
    }
    else
    {
        throw new ArgumentException(nameof(amount), "Withdrawal exceeds balance!");
    }
}

Sekarang kita memiliki beberapa kode, saatnya untuk pengujian.

Membuat pengujian unit dengan Copilot

Mulai build Visual Studio 2026 Insiders, Anda dapat menggunakan pengujian GitHub Copilot untuk .NET untuk menghasilkan pengujian unit secara otomatis. Pengujian GitHub Copilot untuk .NET tidak hanya menghasilkan pengujian, tetapi men-debug pengujian, dan menjalankannya di Test Explorer. Untuk informasi selengkapnya, lihat Gambaran Umum pengujian GitHub Copilot untuk .NET. Ini adalah metode yang direkomendasikan untuk menghasilkan pengujian.

Atau, Anda dapat menggunakan perintah Copilot /tests slash untuk menghasilkan pengujian unit dari kode. Misalnya, Anda dapat mengetik /tests using NUnit Framework untuk menghasilkan pengujian NUnit. Untuk informasi selengkapnya, lihat Gunakan perintah garis miring di Copilot Chat.

Membuat dan menjalankan pengujian unit

Dengan menggunakan build Visual Studio 2026 Insiders, Anda dapat menggunakan pengujian GitHub Copilot untuk .NET untuk menghasilkan pengujian unit secara otomatis.

Sebagian besar prosedur yang dijelaskan dalam artikel ini berlaku untuk pengujian yang dihasilkan secara manual. Jika Anda ingin mempelajari lebih lanjut informasi mendalam tentang pengujian unit, Anda dapat membaca artikel lainnya atau melompat ke bagian Jalankan pengujian di Test Explorer.

Membuat pengujian unit dengan Copilot

Anda dapat menggunakan perintah slash Copilot /tests untuk menghasilkan pengujian unit dari kode. Misalnya, Anda dapat mengetik /tests using NUnit Framework untuk menghasilkan pengujian NUnit. Untuk informasi selengkapnya, lihat Gunakan perintah garis miring di Copilot Chat.

Membuat proyek pengujian unit dan metode pengujian (C#)

Untuk C#, membuat proyek pengujian unit dan stub pengujian unit dari kode Anda seringkali lebih cepat. Atau Anda dapat memilih untuk membuat proyek pengujian unit dan pengujian secara manual tergantung pada kebutuhan Anda. Jika Anda ingin membuat pengujian unit dari kode dengan kerangka kerja pihak ke-3, Anda akan memerlukan salah satu ekstensi ini yang diinstal: NUnit atau xUnit. Jika Anda tidak menggunakan C#, lewati bagian ini dan buka Membuat proyek pengujian unit dan pengujian unit secara manual.

Hasilkan proyek pengujian unit dan stub pengujian unit

  1. Dari jendela editor kode, klik kanan dan pilih Buat Pengujian Unit dari menu klik kanan.

    Dari jendela editor, lihat menu konteks

    Nota

    Perintah menu Buat Pengujian Unit hanya tersedia untuk kode C#. Untuk menggunakan metode ini dengan .NET Core atau .NET Standard, Visual Studio 2019 atau yang lebih baru diperlukan.

  2. Pilih OK untuk menerima default untuk membuat pengujian unit Anda, atau ubah nilai yang digunakan untuk membuat dan memberi nama proyek pengujian unit dan pengujian unit. Anda dapat memilih kode yang ditambahkan secara default ke metode pengujian unit.

    Kotak dialog Buat Uji Unit di Visual Studio

  3. Rangkaian pengujian unit dibuat dalam proyek pengujian unit baru untuk semua metode pada kelas tersebut.

    Pengujian unit tersebut telah dibuat

  4. Sekarang langsung ke depan untuk mempelajari cara Menulis pengujian Anda untuk membuat pengujian unit Anda bermakna, dan pengujian unit tambahan yang mungkin ingin Anda tambahkan untuk menguji kode Anda secara menyeluruh.

Membuat proyek dan pengujian unit secara manual

Proyek pengujian unit biasanya mencerminkan struktur proyek kode tunggal. Dalam contoh MyBank, Anda menambahkan dua proyek pengujian unit bernama AccountsTests dan BankDbTests ke Bank solusi. Nama proyek pengujian sewenang-wenang, tetapi mengadopsi konvensi penamaan standar adalah ide yang baik.

Untuk menambahkan proyek pengujian unit ke solusi:

  1. Di Penjelajah Solusi, klik kanan pada solusi dan pilih Tambahkan>ProyekBaru.

  2. Ketik pengujian di kotak pencarian templat proyek untuk menemukan templat proyek pengujian unit untuk kerangka kerja pengujian yang ingin Anda gunakan. (Dalam contoh dalam artikel ini, kami menggunakan MSTest.)

  3. Pada halaman berikutnya, beri nama proyek. Untuk menguji Accounts proyek contoh kami, Anda dapat memberi nama proyek AccountsTests.

  4. Dalam proyek pengujian unit Anda, tambahkan referensi ke proyek kode yang sedang diuji, dalam contoh kami ke proyek Akun.

    Untuk membuat referensi ke proyek kode:

    1. Dalam proyek pengujian unit di Penjelajah Solusi, klik kanan node Referensi atau Dependensi , lalu pilih Tambahkan Referensi Proyek atau Tambahkan Referensi, mana pun yang tersedia.

    2. Pada kotak dialog Manajer Referensi , buka simpul Solusi dan pilih Proyek. Pilih nama proyek kode dan tutup kotak dialog.

Setiap proyek pengujian unit berisi kelas yang mencerminkan nama kelas dalam proyek kode. Dalam contoh kami, AccountsTests proyek akan berisi kelas-kelas berikut:

  • AccountInfoTests kelas berisi metode pengujian unit untuk AccountInfo kelas dalam Accounts proyek

  • CheckingAccountTests kelas berisi metode pengujian unit untuk CheckingAccount kelas.

Menulis pengujian Anda

Kerangka kerja pengujian unit yang Anda gunakan dan Visual Studio IntelliSense akan memandu Anda menulis kode untuk pengujian unit Anda untuk proyek kode. Untuk berjalan di Test Explorer, sebagian besar kerangka kerja mengharuskan Anda menambahkan atribut tertentu untuk mengidentifikasi metode pengujian unit. Kerangka kerja juga menyediakan cara—biasanya melalui pernyataan pernyataan atau atribut metode —untuk menunjukkan apakah metode pengujian telah lulus atau gagal. Atribut lain mengidentifikasi metode penyiapan opsional yang berada di inisialisasi kelas dan sebelum setiap metode pengujian dan metode teardown yang dijalankan setelah setiap metode pengujian dan sebelum kelas dihancurkan.

Pola AAA (Arrange, Act, Assert) adalah cara umum menulis pengujian unit untuk metode yang sedang diuji.

  • Bagian Susun dari metode pengujian unit menginisialisasi objek dan mengatur nilai data yang diteruskan ke metode di bawah pengujian.

  • Bagian Act memanggil metode yang sedang diuji dengan parameter yang disusun.

  • Bagian Tegaskan memverifikasi bahwa tindakan metode di bawah pengujian berulah seperti yang diharapkan. Untuk .NET, metode di Assert kelas sering digunakan untuk verifikasi.

Untuk menguji CheckingAccount.Withdraw metode contoh kami, kita dapat menulis dua pengujian: salah satu yang memverifikasi perilaku standar metode, dan yang memverifikasi bahwa penarikan lebih dari saldo akan gagal (Kode berikut menunjukkan pengujian unit MSTest, yang didukung dalam .NET.). Di dalam kelas CheckingAccountTests, kita menambahkan metode berikut:

[TestMethod]
public void Withdraw_ValidAmount_ChangesBalance()
{
    // arrange
    double currentBalance = 10.0;
    double withdrawal = 1.0;
    double expected = 9.0;
    var account = new CheckingAccount("JohnDoe", currentBalance);

    // act
    account.Withdraw(withdrawal);

    // assert
    Assert.AreEqual(expected, account.Balance);
}

[TestMethod]
public void Withdraw_AmountMoreThanBalance_Throws()
{
    // arrange
    var account = new CheckingAccount("John Doe", 10.0);

    // act and assert
    Assert.ThrowsException<System.ArgumentException>(() => account.Withdraw(20.0));
}

Untuk informasi selengkapnya tentang kerangka kerja pengujian unit Microsoft, lihat salah satu artikel berikut ini:

Mengatur batas waktu untuk pengujian unit

Jika Anda menggunakan kerangka kerja MSTest, Anda dapat menggunakan TimeoutAttribute untuk mengatur batas waktu pada metode pengujian individual:

[TestMethod]
[Timeout(2000)]  // Milliseconds
public void My_Test()
{ ...
}

Untuk mengatur batas waktu ke maksimum yang diizinkan:

[TestMethod]
[Timeout(TestTimeout.Infinite)]  // Milliseconds
public void My_Test ()
{ ...
}

Menjalankan pengujian di Test Explorer

Saat Anda membuat proyek pengujian, pengujian muncul di Test Explorer. Jika Test Explorer tidak terlihat, pilih Uji pada menu Visual Studio, pilih Windows, lalu pilih Test Explorer (atau tekan Ctrl + E, T).

Unit Test Explorer

Saat Anda menjalankan, menulis, dan menjalankan ulang pengujian Anda, Test Explorer dapat menampilkan hasil dalam grup Pengujian Gagal, Tes Lulus, Pengujian yang Dilewati , dan Tidak Menjalankan Pengujian. Anda dapat memilih grup yang berbeda menurut opsi di toolbar.

Anda juga dapat memfilter pengujian dalam tampilan apa pun dengan mencocokkan teks di kotak pencarian di tingkat global atau dengan memilih salah satu filter yang telah ditentukan sebelumnya. Anda dapat menjalankan pilihan pengujian kapan saja. Hasil uji coba segera jelas di bilah pass/fail di bagian atas jendela penjelajah. Detail hasil metode pengujian ditampilkan saat Anda memilih pengujian.

Menjalankan dan melihat pengujian

Toolbar Test Explorer membantu Anda menemukan, mengatur, dan menjalankan pengujian yang Anda minati.

Menjalankan pengujian dari toolbar Test Explorer

Anda dapat memilih Jalankan Semua untuk menjalankan semua pengujian Anda (atau tekan Ctrl + R, V), atau pilih Jalankan untuk memilih subset pengujian yang akan dijalankan (Ctrl + R, T). Pilih pengujian untuk menampilkan detail pengujian tersebut di panel detail pengujian. Pilih Buka Uji dari menu klik kanan (Keyboard: F12) untuk menampilkan kode sumber untuk pengujian yang dipilih.

Jika pengujian individual tidak memiliki dependensi yang mencegahnya dijalankan dalam urutan apa pun, aktifkan eksekusi pengujian paralel di menu pengaturan toolbar. Ini dapat mengurangi waktu yang diperlukan untuk menjalankan semua pengujian.

Menjalankan pengujian setelah setiap build

Untuk menjalankan pengujian unit setelah setiap build lokal, buka ikon pengaturan di toolbar Test Explorer dan pilih Jalankan Pengujian Setelah Build.

Memfilter dan mengelompokkan daftar pengujian

Saat Anda memiliki sejumlah besar pengujian, Anda dapat mengetik di kotak pencarian Test Explorer untuk memfilter daftar menurut string yang ditentukan. Anda dapat membatasi kriteria filter Anda lebih lanjut dengan memilih dari daftar filter.

Kategori filter pencarian

Button Description
Tombol grup Test Explorer Untuk mengelompokkan pengujian berdasarkan kategori, pilih tombol Kelompokkan Menurut .

Untuk informasi selengkapnya, lihat Menjalankan pengujian unit dengan Test Explorer.

Tanya Jawab

T: Bagaimana cara melakukan debugging pengujian unit?

A: Gunakan Test Explorer untuk memulai sesi debugging untuk pengujian Anda. Menelusuri kode Anda dengan debugger Visual Studio dengan mulus membawa Anda bolak-balik antara pengujian unit dan proyek yang sedang diuji. Untuk memulai debugging:

  1. Di editor Visual Studio, atur titik henti dalam satu atau beberapa metode pengujian yang ingin Anda debug.

    Nota

    Karena metode pengujian dapat berjalan dalam urutan apa pun, atur titik henti di semua metode pengujian yang ingin Anda debug.

  2. Di Test Explorer, pilih metode pengujian lalu pilih Debug Tes yang Dipilih dari menu pintasan.

Pelajari lebih lanjut tentang debug unit test.

T: Jika saya menggunakan TDD, bagaimana cara membuat kode dari pengujian saya?

A: Gunakan Quick Actions untuk menghasilkan kelas dan metode dalam kode proyek Anda. Tulis pernyataan dalam metode pengujian yang memanggil kelas atau metode yang ingin Anda hasilkan, lalu buka bola lampu yang muncul di bawah kesalahan. Jika panggilan dibuat ke konstruktor dari kelas baru, pilih Hasilkan tipe dari menu dan ikuti panduan untuk menyisipkan kelas ke dalam proyek kode Anda. Jika panggilan ke metode, pilih Buat metode dari menu IntelliSense.

Buat Menu Tindakan Cepat Stub Metode

T: Dapatkah saya membuat pengujian unit yang mengambil beberapa set data sebagai input untuk menjalankan pengujian?

A: Ya. Metode pengujian berbasis data memungkinkan Anda menguji berbagai nilai dengan satu metode pengujian unit. DataRowGunakan atribut , DynamicData atau DataSource untuk metode pengujian yang menentukan sumber data yang berisi nilai variabel yang ingin Anda uji.

Metode yang diatribusikan berjalan sekali untuk setiap baris di sumber data. Test Explorer melaporkan kegagalan pengujian untuk metode jika salah satu perulangan gagal. Panel detail hasil pengujian untuk metode menunjukkan metode status pass/fail untuk setiap baris data.

Pelajari selengkapnya tentang pengujian unit berbasis data.

T: Dapatkah saya melihat berapa banyak kode saya yang diuji oleh pengujian unit saya?

A: Ya. Anda dapat menentukan jumlah kode yang sebenarnya sedang diuji oleh pengujian unit Anda dengan menggunakan alat cakupan Visual Studio Code di Visual Studio. Bahasa asli dan terkelola dan semua kerangka kerja pengujian unit yang dapat dijalankan oleh Kerangka Kerja Pengujian Unit didukung.

A: Ya. Anda dapat menentukan jumlah kode yang sebenarnya sedang diuji oleh pengujian unit Anda dengan menggunakan alat cakupan Visual Studio Code di Visual Studio Enterprise. Bahasa asli dan terkelola dan semua kerangka kerja pengujian unit yang dapat dijalankan oleh Kerangka Kerja Pengujian Unit didukung.

Anda dapat menjalankan cakupan kode pada pengujian yang dipilih atau pada semua pengujian dalam solusi. Jendela Hasil Capaian Kode menampilkan persentase blok kode produk perangkat lunak yang diterapkan berdasarkan tingkat baris, fungsi, kelas, ruang nama, dan modul.

Untuk menjalankan cakupan kode untuk metode pengujian dalam solusi, pilih Uji>Analisis Cakupan Kode untuk Semua Pengujian.

Hasil cakupan muncul di jendela Hasil Cakupan Kode .

Hasil cakupan kode

Pelajari selengkapnya tentang cakupan kode.

T: Dapatkah saya menguji metode dalam kode saya yang memiliki dependensi eksternal?

A: Ya. Jika Anda memiliki Visual Studio Enterprise, Microsoft Fakes dapat digunakan dengan metode pengujian yang Anda tulis dengan menggunakan kerangka kerja pengujian unit untuk kode terkelola.

Microsoft Fakes menggunakan dua pendekatan untuk membuat kelas pengganti untuk dependensi eksternal:

  1. Stub menghasilkan kelas pengganti yang berasal dari antarmuka induk kelas dependensi target. Metode stub dapat menggantikan metode virtual publik dari kelas target.

  2. Shim menggunakan instrumentasi runtime untuk mengalihkan panggilan dari metode target ke metode shim pengganti pada metode yang non-virtual.

Dalam kedua pendekatan, Anda menggunakan delegasi panggilan yang dihasilkan ke metode dependensi untuk menentukan perilaku yang Anda inginkan dalam metode pengujian.

Pelajari lebih lanjut tentang cara mengisolasi metode pengujian unit dengan Microsoft Fakes.

T: Dapatkah saya menggunakan kerangka kerja pengujian unit lain untuk membuat pengujian unit?

A: Ya, ikuti langkah-langkah ini untuk menemukan dan menginstal kerangka kerja lainnya. Setelah menghidupkan ulang Visual Studio, buka kembali solusi Untuk membuat pengujian unit, lalu pilih kerangka kerja yang diinstal di sini:

Pilih kerangka kerja pengujian unit terinstal lainnya

Stub pengujian unit milik Anda akan dibuat menggunakan kerangka kerja yang dipilih.

T: Bagaimana saya bisa mengekspor hasil pengujian unit saya?

A: Anda dapat menggunakan file .runsettings dengan baris perintah atau Visual Studio IDE untuk mengonfigurasi pengujian unit dan mengatur file hasil pengujian. Untuk informasi selengkapnya, lihat Elemen LoggerRunSettings.