Tulis pengujian unit untuk C/C++ di Visual Studio

Anda dapat menulis dan menjalankan pengujian unit C++ menggunakan jendela Test Explorer. Ini berfungsi seperti yang dilakukan untuk bahasa lain. Untuk informasi selengkapnya tentang menggunakan Test Explorer, lihat Menjalankan pengujian unit dengan Test Explorer.

Catatan

Beberapa fitur seperti Pengujian Unit Langsung, Pengujian UI Berkode, dan IntelliTest tidak didukung untuk C++.

Visual Studio menyertakan kerangka kerja pengujian C++ ini tanpa unduhan tambahan yang diperlukan:

  • Kerangka Kerja Pengujian Unit Microsoft untuk C++
  • Uji Coba Google
  • Boost.Test
  • CTest

Anda dapat menggunakan kerangka kerja yang diinstal, atau menulis adapter pengujian Anda sendiri untuk kerangka kerja apa pun yang ingin Anda gunakan dalam Visual Studio. Adapter pengujian mengintegrasikan pengujian unit dengan jendela Test Explorer. Beberapa adapter pihak ketiga tersedia di Marketplace Visual Studio. Untuk informasi selengkapnya, lihat Menginstal kerangka kerja pengujian unit pihak ketiga.

Visual Studio 2017 dan yang lebih baru (Professional dan Enterprise)

Proyek pengujian unit C++ mendukung CodeLens.

Visual Studio 2017 and yang lebih baru (semua edisi)

  • Adapter Google Test disertakan sebagai komponen default Pengembangan desktop dengan beban kerja C++. Ini memiliki templat proyek yang dapat Anda tambahkan ke solusi. Klik kanan pada simpul solusi di Penjelajah Solusi dan pilih Tambahkan>Project Baru pada menu pintasan untuk menambahkan templat proyek. Ini juga memiliki opsi yang dapat Anda konfigurasi melaluiAlat>Opsi. Untuk informasi selengkapnya, lihat Cara: Menggunakan Google Test di Visual Studio.

  • Boost.Test disertakan sebagai komponen default Pengembangan desktop dengan beban kerja C++. Hal ini terintegrasi dengan Test Explorer, tetapi saat ini tidak memiliki templat proyek. Ini harus dikonfigurasi secara manual. Untuk informasi selengkapnya, lihat Cara: Menggunakan Google Test di Visual Studio.

  • Dukungan CTest disertakan dengan komponen alat C++ CMake, yang merupakan bagian dari Pengembangan desktop dengan beban kerja C++. Untuk informasi selengkapnya, lihat Cara: Menggunakan CTest di Visual Studio.

Versi Visual Studio yang lebih lama

Anda dapat mengunduh adapter Google Test dan ekstensi Adapter Boost.Test di Marketplace Visual Studio. Temukan di Adapter pengujian untuk Boost.Test dan Adapter pengujian untuk Google Test.

Alur kerja pengujian dasar

Bagian berikut menunjukkan langkah-langkah dasar untuk memulai pengujian unit C++. Konfigurasi dasarnya mirip untuk kerangka kerja Microsoft dan Google Test. Boost.Test mengharuskan Anda membuat proyek pengujian secara manual.

Membuat proyek pengujian di Visual Studio 2022

Tentukan dan jalankan pengujian unit di dalam satu atau beberapa proyek pengujian. Proyek pengujian membuat aplikasi terpisah yang memanggil kode dalam file yang dapat dieksekusi dan melaporkan perilakunya. Buat proyek pengujian dalam solusi yang sama dengan kode yang ingin Anda uji.

Untuk menambahkan proyek pengujian baru ke solusi yang sudah ada,

  1. Klik kanan pada node Solusi di Penjelajah Solusi.
  2. Di menu pop-up, pilih Tambahkan>Proyek Baru.
  3. Atur Bahasa ke C++ dan ketik "uji" ke dalam kotak pencarian. Ilustrasi berikut menunjukkan proyek pengujian yang tersedia saat Pengembangan Desktop dengan C++ dan beban kerja Pengembangan UWP diinstal:

C++ Test Projects in Visual Studio 2022

Membuat proyek pengujian di Visual Studio 2019

Menentukan dan menjalankan pengujian di dalam satu atau beberapa proyek pengujian. Membuat proyek dalam solusi yang sama dengan kode yang ingin Anda uji. Untuk menambahkan proyek pengujian baru ke solusi yang sudah ada,

  1. Klik kanan pada node Solusi di Penjelajah Solusi.
  2. Di menu pop-up, pilih Tambahkan>Proyek Baru.
  3. Atur Bahasa ke C++ dan ketik "uji" ke dalam kotak pencarian. Ilustrasi berikut menunjukkan proyek pengujian yang tersedia saat Pengembangan Desktop dengan C++ dan beban kerja Pengembangan UWP diinstal:

C++ Test Projects in Visual Studio 2019

Membuat referensi ke proyek lain dalam solusi

Untuk mengaktifkan akses ke fungsi dalam proyek yang sedang diuji, tambahkan referensi ke proyek dalam proyek pengujian Anda. Klik kanan pada node proyek pengujian di Penjelajah Solusi pada menu pop-up. Pilih Tambahkan>Referensi. Dalam dialog Tambahkan Referensi, pilih proyek yang ingin Anda uji.

Add reference

Jika kode pengujian tidak mengekspor fungsi yang ingin Anda uji, tambahkan file .obj atau .lib output ke dependensi proyek pengujian. Untuk informasi selengkapnya, lihat Untuk menautkan pengujian ke file objek atau pustaka. Jangan sertakan file objek yang memiliki main fungsi atau titik masuk standar lain seperti wmain, , WinMainatau DllMain. Saat Anda menambahkan file sumber baru ke proyek Anda, perbarui dependensi proyek pengujian untuk menyertakan file objek yang sesuai.

Menambahkan arahan #include untuk file header

Selanjutnya, dalam file .cpp pengujian unit Anda, tambahkan arahan #include untuk file header apa pun yang menjelaskan jenis dan fungsi yang ingin Anda uji. Ketik #include ", lalu IntelliSense diaktifkan untuk membantu Anda memilih. Ulangi untuk header lainnya.

Screenshot of the Solution Explorer showing an #include directive being added with IntelliSense highlighting a header file for inclusion.

Untuk menghindari harus mengetik jalur lengkap di setiap pernyataan sertakan dalam file sumber, tambahkan folder yang diperlukan di Proyek>Properti>C/C++>Umum>Direktori Sertakan Tambahan.

Menulis metode pengujian

Catatan

Bagian ini memperlihatkan sintaks untuk Kerangka Kerja Pengujian Unit Microsoft untuk C/C++. Hal tersebut didokumentasikan di sini: Referensi API MICROSOFT.VisualStudio.TestTools.CppUnitTestFramework. Untuk dokumentasi Google Test, lihat Primer Google Test. Untuk Boost.Test, lihat Pustaka Boost Test: Kerangka kerja pengujian unit.

File .cpp dalam proyek pengujian Anda memiliki kelas stub dan metode yang ditentukan untuk Anda. Mereka menunjukkan contoh cara menulis kode pengujian. Tanda tangan menggunakan makro TEST_CLASS dan TEST_METHOD, yang membuat metode dapat ditemukan dari jendela Test Explorer.

Screenshot of the Test Explorer window that shows the unittest1.cpp code file containing a stub class and method using the TEST_CLASS and TEST_METHOD macros.

TEST_CLASS dan TEST_METHOD adalah bagian dari Microsoft Native Test Framework. Test Explorer menemukan metode pengujian dalam kerangka kerja lain yang didukung dengan cara yang serupa.

TEST_METHOD mengembalikan void. Untuk menghasilkan hasil pengujian, gunakan metode statis di kelas Assert untuk menguji hasil aktual terhadap hasil yang diharapkan. Dalam contoh berikut, asumsikan MyClass memiliki konstruktor yang mengambil std::string. Contoh ini menunjukkan bagaimana Anda dapat menguji bahwa konstruktor menginisialisasi kelas seperti yang Anda harapkan:

TEST_METHOD(TestClassInit)
{
    std::string name = "Bill";
    MyClass mc(name);
    Assert::AreEqual(name, mc.GetName());
}

Dalam contoh sebelumnya, hasil panggilan Assert::AreEqual menentukan apakah pengujian lulus atau gagal. Kelas Assert berisi banyak metode lain untuk membandingkan hasil yang diharapkan dengan hasil aktual.

Anda dapat menambahkan sifat ke metode pengujian untuk menentukan pemilik pengujian, prioritas, dan informasi lainnya. Anda kemudian dapat menggunakan nilai-nilai ini untuk mengurutkan dan mengelompokkan pengujian di Test Explorer. Untuk informasi selengkapnya, lihat Menjalankan pengujian unit dengan Test Explorer.

Jalankan tes

  1. Pada menu Pengujian, pilih Windows>Test Explorer. Ilustrasi berikut menunjukkan proyek pengujian yang pengujiannya belum berjalan.

    Test Explorer before running tests

    Catatan

    Integrasi CTest dengan Test Explorer belum tersedia. Jalankan pengujian CTest dari menu utama CMake.

  2. Jika salah satu pengujian Anda hilang dari jendela, bangun proyek pengujian dengan mengeklik kanan node-nya di Penjelajah Solusi dan memilih Bangun atau Bangun Ulang.

  3. Di Test Explorer, pilih Jalankan Semua, atau pilih pengujian tertentu yang ingin Anda jalankan. Klik kanan pada pengujian untuk opsi lain, termasuk menjalankannya dalam mode debug dengan titik henti diaktifkan. Setelah semua pengujian berjalan, jendela menunjukkan pengujian yang lulus dan yang gagal.

    Test Explorer after tests are run

Untuk pengujian yang gagal, pesan menampilkan detail yang membantu mendiagnosis penyebabnya. Klik kanan pada pengujian yang gagal untuk menu pop-up. Pilih Debug untuk menelusuri fungsi tempat kegagalan terjadi.

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

Untuk informasi selengkapnya tentang pengujian unit, lihat Dasar-dasar pengujian unit.

Menggunakan CodeLens

Visual Studio 2017 dan yang lebih baru (edisi Professional dan Enterprise)

CodeLens memungkinkan Anda dengan cepat melihat status pengujian unit tanpa meninggalkan editor kode.

Inisialisasi CodeLens untuk proyek pengujian unit C++ dengan salah satu cara berikut:

  • Edit dan bangun proyek atau solusi pengujian Anda.
  • Bangun kembali proyek atau solusi Anda.
  • Jalankan pengujian dari jendela Test Explorer.

Setelah diinisialisasi, Anda dapat melihat ikon status pengujian di atas setiap pengujian unit.

C++ CodeLens Icons

Pilih ikon untuk informasi selengkapnya, atau untuk menjalankan atau men-debug pengujian unit:

C++ CodeLens Run and Debug