Visual Studio'da C/C++ için birim testleri yazma

Test Gezgini penceresini kullanarak C++ birim testlerinizi yazabilir ve çalıştırabilirsiniz. Diğer dillerde olduğu gibi çalışır. Test Gezgini'ni kullanma hakkında daha fazla bilgi için bkz. Test Gezgini ile birim testleri çalıştırma.

Not

Canlı Birim Testi, Kodlanmış UI Testleri ve IntelliTest gibi bazı özellikler C++ için desteklenmez.

Visual Studio ek indirme gerektirmeden şu C++ test çerçevelerini içerir:

  • C++ için Microsoft Unit Testing Framework
  • Google Test
  • Boost.Test
  • CTest

Yüklü çerçeveleri kullanabilir veya Visual Studio'da kullanmak istediğiniz çerçeve için kendi test bağdaştırıcınızı yazabilirsiniz. Test bağdaştırıcısı, birim testlerini Test Gezgini penceresiyle tümleştirir. Visual Studio Market'te çeşitli üçüncü taraf bağdaştırıcılar bulunur. Daha fazla bilgi için bkz . Üçüncü taraf birim testi çerçevelerini yükleme.

Visual Studio 2017 ve üzeri (Professional ve Enterprise)

C++ birim testi projeleri CodeLens'i destekler.

Visual Studio 2017 ve üzeri (tüm sürümler)

  • Google Test Bağdaştırıcısı, C++ iş yüküyle Masaüstü geliştirmenin varsayılan bileşeni olarak dahil edilir. Çözüme ekleyebileceğiniz bir proje şablonu vardır. Çözüm Gezgini'da çözüm düğümüne sağ tıklayın ve kısayol menüsünden Yeni Proje Ekle'yi>seçerek proje şablonunu ekleyin. Ayrıca, Araçlar>Seçenekleri aracılığıyla yapılandırabileceğiniz seçenekler de vardır. Daha fazla bilgi için bkz . Nasıl yapılır: Visual Studio'da Google Test'i kullanma.

  • Boost.Test, C++ iş yüküyle Masaüstü geliştirmenin varsayılan bileşeni olarak dahil edilir. Test Gezgini ile tümleşiktir, ancak şu anda bir proje şablonu yoktur. El ile yapılandırılmalıdır. Daha fazla bilgi için bkz . Nasıl yapılır: Visual Studio'da Boost.Test Kullanma.

  • CTest desteği, C++ iş yüküyle Masaüstü geliştirmenin bir parçası olan C++ CMake araçları bileşenine dahildir. Daha fazla bilgi için bkz . Nasıl yapılır: Visual Studio'da CTest kullanma.

Visual Studio'nun önceki sürümleri

Google Test bağdaştırıcısını ve Boost.Test Adapter uzantılarını Visual Studio Market'te indirebilirsiniz. Bunları Boost.Test için Test bağdaştırıcısı ve Google Test için Test bağdaştırıcısı'nda bulabilirsiniz.

Temel test iş akışı

Aşağıdaki bölümlerde C++ birim testine başlamanıza yönelik temel adımlar gösterilmektedir. Temel yapılandırma hem Microsoft hem de Google Test çerçeveleri için benzerdir. Boost.Test, el ile bir test projesi oluşturmanızı gerektirir.

Visual Studio 2022'de test projesi oluşturma

Birim testlerini bir veya daha fazla test projesi içinde tanımlayın ve çalıştırın. Test projesi yürütülebilir dosyanızdaki kodu çağıran ve davranışını bildiren ayrı bir uygulama oluşturur. Test etmek istediğiniz kodla aynı çözümde test projeleri oluşturun.

Mevcut bir çözüme yeni bir test projesi eklemek için

  1. Çözüm Gezgini Çözüm düğümüne sağ tıklayın.
  2. Açılır menüde Yeni Proje Ekle'yi>seçin.
  3. Dil'i C++ olarak ayarlayın ve arama kutusuna "test" yazın. Aşağıdaki çizimde, C++ ile Masaüstü Geliştirme ve UWP Geliştirme iş yükü yüklendiğinde kullanılabilen test projeleri gösterilmektedir:

C++ Test Projects in Visual Studio 2022

Visual Studio 2019'da test projesi oluşturma

Bir veya daha fazla test projesinde testleri tanımlayın ve çalıştırın. Projeleri test etmek istediğiniz kodla aynı çözümde oluşturun. Mevcut bir çözüme yeni bir test projesi eklemek için

  1. Çözüm Gezgini Çözüm düğümüne sağ tıklayın.
  2. Açılır menüde Yeni Proje Ekle'yi>seçin.
  3. Dil'i C++ olarak ayarlayın ve arama kutusuna "test" yazın. Aşağıdaki çizimde, C++ ile Masaüstü Geliştirme ve UWP Geliştirme iş yükü yüklendiğinde kullanılabilen test projeleri gösterilmektedir:

C++ Test Projects in Visual Studio 2019

Çözümdeki diğer projelere başvurular oluşturma

Test altındaki projedeki işlevlere erişimi etkinleştirmek için, test projenizdeki projeye bir başvuru ekleyin. Açılır menü için Çözüm Gezgini test projesi düğümüne sağ tıklayın. Başvuru Ekle'yi>seçin. Başvuru Ekle iletişim kutusunda, test etmek istediğiniz projeleri seçin.

Add reference

Test kodu test etmek istediğiniz işlevleri dışarı aktarmıyorsa çıkış .obj veya .lib dosyalarını test projesinin bağımlılıklarına ekleyin. Daha fazla bilgi için bkz . Testleri nesne veya kitaplık dosyalarına bağlamak için. İşlevi veya , WinMainveya DllMaingibi wmainbaşka bir main standart giriş noktası olan nesne dosyalarını eklemeyin. Projenize yeni kaynak dosyaları eklediğinizde, test projesi bağımlılıklarını ilgili nesne dosyalarını içerecek şekilde güncelleştirin.

Üst bilgi dosyaları için #include yönergeleri ekleme

Ardından, birim testi .cpp dosyanızda, test etmek istediğiniz türleri ve işlevleri bildiren tüm üst bilgi dosyaları için bir #include yönerge ekleyin. yazın #include "ve ardından IntelliSense, seçmenize yardımcı olmak için etkinleştirilir. Daha fazla üst bilgi için yineleyin.

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

Kaynak dosyadaki her include deyimine tam yolu yazmak zorunda kalmamak için, gerekli klasörleri Proje>Özellikleri>C/C++>Genel>Ek Ekleme Dizinleri'ne ekleyin.

Test yöntemleri yazma

Not

Bu bölümde, C/C++ için Microsoft Unit Testing Framework söz dizimi gösterilmektedir. Burada belgelenmiştir: Microsoft.VisualStudio.TestTools.CppUnitTestFramework API başvurusu. Google Test belgeleri için bkz . Google Test primer. Boost.Test için bkz . Boost Test kitaplığı: Birim testi çerçevesi.

Test projenizdeki .cpp dosyasında sizin için tanımlanmış bir saplama sınıfı ve yöntemi vardır. Test kodu yazma örneği gösterilir. İmzalar TEST_CLASS ve TEST_METHOD makroları kullanır ve bu da yöntemleri Test Gezgini penceresinden bulunabilir hale getirir.

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 ve TEST_METHOD, Microsoft Yerel Test Çerçevesi'nin bir parçasıdır. Test Gezgini , desteklenen diğer çerçevelerdeki test yöntemlerini benzer şekilde bulur.

bir TEST_METHOD geçersiz döndürür. Bir test sonucu oluşturmak için, sınıftaki statik yöntemleri Assert kullanarak gerçek sonuçları beklenen sonuçlara karşı test edin. Aşağıdaki örnekte, kullanan bir oluşturucu olduğunu std::stringvarsayalımMyClass. Bu örnek, oluşturucunun sınıfı beklediğiniz gibi başlatdığını nasıl test ettiğinizi gösterir:

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

Önceki örnekte, çağrının sonucu testin Assert::AreEqual başarılı mı yoksa başarısız mı olduğunu belirler. sınıfı, Assert beklenen sonuçları gerçek sonuçlarla karşılaştırmak için başka birçok yöntem içerir.

Test sahiplerini, önceliğini ve diğer bilgileri belirtmek için test yöntemlerine özellikler ekleyebilirsiniz. Test Gezgini'nde testleri sıralamak ve gruplandırmak için bu değerleri kullanabilirsiniz. Daha fazla bilgi için bkz . Test Gezgini ile birim testleri çalıştırma.

Testleri çalıştırma

  1. Test menüsünde Windows>Test Gezgini'ni seçin. Aşağıdaki çizimde testleri henüz çalıştırılmayan bir test projesi gösterilmektedir.

    Test Explorer before running tests

    Not

    Test Gezgini ile CTest tümleştirmesi henüz kullanılamıyor. CMake ana menüsünden CTest testleri çalıştırın.

  2. Testlerinizin herhangi biri pencerede eksikse, Çözüm Gezgini düğümüne sağ tıklayıp Oluştur veya Yeniden Derle'yi seçerek test projesini oluşturun.

  3. Test Gezgini'nde Tümünü Çalıştır'ı seçin veya çalıştırmak istediğiniz belirli testleri seçin. Diğer seçenekler için bir teste sağ tıklayın ve kesme noktaları etkin olarak hata ayıklama modunda çalıştırın. Tüm testler çalıştırıldıktan sonra, pencerede geçirilen testler ve başarısız olanlar gösterilir.

    Test Explorer after tests are run

Başarısız testler için, ileti nedenini tanılamaya yardımcı olan ayrıntıları görüntüler. Açılır menü için başarısız olan teste sağ tıklayın. Hata ayıkla'yı seçerek hatanın oluştuğu işlevde adım adım ilerleyin.

Test Gezgini'ni kullanma hakkında daha fazla bilgi için bkz. Test Gezgini ile birim testleri çalıştırma.

Birim testi hakkında daha fazla bilgi için bkz . Birim testi temelleri.

CodeLens kullanma

Visual Studio 2017 ve üzeri (Professional ve Enterprise sürümleri)

CodeLens , kod düzenleyicisinden çıkmadan birim testinin durumunu hızla görmenizi sağlar.

C++ birim testi projesi için CodeLens'i aşağıdaki yollardan herhangi biriyle başlatın:

  • Test projenizi veya çözümünüzü düzenleyin ve oluşturun.
  • Projenizi veya çözümünüzü yeniden oluşturun.
  • Testleri Test Gezgini penceresinden çalıştırın.

Başlatıldıktan sonra, her birim testinin üzerinde test durumu simgelerini görebilirsiniz.

C++ CodeLens Icons

Daha fazla bilgi için simgeyi seçin veya birim testini çalıştırmak veya hatalarını ayıklamak için:

C++ CodeLens Run and Debug