Gunakan Microsoft Unit Testing Framework untuk C++ di Visual Studio

Kerangka Kerja Pengujian Unit Microsoft untuk C++ disertakan secara default dalam Pengembangan Desktop dengan beban kerja C++.

Untuk menulis pengujian unit dalam proyek terpisah

Biasanya, Anda menjalankan kode pengujian dalam proyeknya sendiri dalam solusi yang sama dengan kode yang ingin Anda uji. Untuk menyiapkan dan mengonfigurasi proyek pengujian baru, lihat Menulis pengujian unit untuk C/C++.

Untuk menulis pengujian unit dalam proyek yang sama

Dalam beberapa kasus, misalnya saat menguji fungsi yang tidak diekspor di DLL, Anda mungkin perlu membuat pengujian dalam proyek yang sama dengan program yang Anda uji. Untuk menulis pengujian unit dalam proyek yang sama:

  1. Ubah properti proyek untuk menyertakan header dan file pustaka yang diperlukan untuk pengujian unit.

    1. Di Penjelajah Solusi, pada menu pintasan proyek yang sedang Anda uji, pilih Properti. Jendela properti proyek terbuka.

    2. Dalam dialog Halaman Properti, pilih Properti Konfigurasi>VC++ Direktori.

    3. Pilih panah bawah di baris berikut dan pilih <Edit>. Tambahkan jalur ini:

      Direktori Properti
      Sertakan Direktori $(VCInstallDir)Auxiliary\VS\UnitTest\include
      Direktori Pustaka $(VCInstallDir)Auxiliary\VS\UnitTest\lib
  2. Tambahkan file Pengujian Unit C++:

    1. Klik kanan pada node proyek di Penjelajah Solusi dan pilih Tambahkan>Item Baru.

    2. Dalam dialog Tambahkan Item Baru, pilih File C++ (.cpp), beri nama yang sesuai, lalu pilih Tambahkan.

Untuk menautkan pengujian ke file objek atau pustaka

Jika kode di bawah pengujian tidak mengekspor fungsi yang ingin diuji, Anda dapat menambahkan file .obj atau .lib output ke dependensi proyek pengujian. Ubah properti proyek untuk menyertakan header dan file pustaka yang diperlukan untuk pengujian unit.

  1. Di Penjelajah Solusi, pada menu pintasan proyek yang sedang Anda uji, pilih Properti. Jendela properti proyek terbuka.

  2. Pilih halamanInput>Linker>Properti Konfigurasi, lalu pilih Dependensi Tambahan.

    Pilih Edit, dan tambahkan nama file .obj atau .lib. Jangan gunakan nama jalur lengkap.

  3. Pilih halamanUmum>Linker>Properti Konfigurasi, lalu pilih Direktori Pustaka Tambahan.

    Pilih Edit, dan tambahkan jalur direktori file .obj atau .lib. Jalur biasanya berada dalam folder build proyek yang sedang diuji.

  4. Pilih halaman Properti Konfigurasi>VC++Direktori, lalu pilih Sertakan Direktori.

    Pilih Edit, lalu tambahkan direktori header proyek di bawah pengujian.

Menulis tes

Setiap file .cpp dengan kelas pengujian harus menyertakan "CppUnitTest.h" dan memiliki pernyataan penggunaan untuk using namespace Microsoft::VisualStudio::CppUnitTestFramework. Proyek pengujian sudah dikonfigurasi untuk Anda. Ini juga mencakup definisi namespace layanan, dan TEST_CLASS dengan TEST_METHOD untuk memulai. Anda dapat mengubah nama namespace layanan dan nama dalam tanda kurung di makro kelas dan metode.

Kerangka kerja pengujian mendefinisikan makro khusus untuk menginisialisasi modul pengujian, kelas, dan metode, dan untuk pembersihan sumber daya setelah pengujian selesai. Makro ini menghasilkan kode untuk dijalankan sebelum kelas atau metode pertama kali diakses, dan setelah pengujian terakhir berjalan. Untuk informasi selengkapnya, lihat Menginisialisasi dan membersihkan.

Gunakan metode statis di kelas Assert untuk menentukan kondisi pengujian. Gunakan kelas Pencatat untuk menulis pesan ke Jendela Output. Tambahkan atribut ke metode pengujian

Jalankan tes

  1. Pada menu Pengujian, pilih Windows>Test Explorer.

  2. Jika salah satu pengujian Anda hilang dari jendela, bangun proyek pengujian dengan mengeklik kanan simpul-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.

  4. Di Jendela Output pilih Pengujian di menu drop-down untuk melihat pesan yang Logger ditulis oleh kelas:

    C++ Output Window showing test messages

Menentukan sifat untuk mengaktifkan pengelompokan

Anda dapat menentukan sifat pada metode pengujian, yang memungkinkan Anda mengategorikan dan mengelompokkan pengujian di Test Explorer. Untuk menentukan sifat, gunakan TEST_METHOD_ATTRIBUTE makro. Misalnya, untuk menentukan sifat bernama TEST_MY_TRAIT:

#define TEST_MY_TRAIT(traitValue) TEST_METHOD_ATTRIBUTE(L"MyTrait", traitValue)

Untuk menggunakan sifat yang ditentukan dalam pengujian unit Anda:

BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
    TEST_OWNER(L"OwnerName")
    TEST_PRIORITY(1)
    TEST_MY_TRAIT(L"thisTraitValue")
END_TEST_METHOD_ATTRIBUTE()

TEST_METHOD(Method1)
{
    Logger::WriteMessage("In Method1");
    Assert::AreEqual(0, 0);
}

Makro atribut sifat C++

Sifat yang telah ditentukan sebelumnya berikut ditemukan di CppUnitTest.h. Untuk informasi selengkapnya, lihat Referensi Microsoft Unit Testing Framework for C++ API.

Makro Deskripsi
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue) Gunakan makro TEST_METHOD_ATTRIBUTE untuk menentukan sifat.
TEST_OWNER(ownerAlias) Gunakan sifat Pemilik yang telah ditentukan sebelumnya untuk menentukan pemilik metode pengujian.
TEST_PRIORITY(priority) Gunakan sifat Prioritas yang telah ditentukan sebelumnya untuk menetapkan prioritas relatif pada metode pengujian Anda.