Aracılığıyla paylaş


Kod kapsamı belirlemek ne kadar kod kullanılarak test edilmiştir

Proje kodunuzun ne oranda aslında birim testleri gibi kodlanmış testler tarafından test edilen belirlemek için Visual Studio kod kapsamı özelliğini kullanabilirsiniz. Etkin hataların karşı korumak için testlerinizi çalıştıran veya 'bir büyük oranda kodunuzun kapak'.

Kod kapsamı çözümleme (CLI) yönetilen ve yönetilmeyen (yerel) kod uygulanabilir.

Test yöntemlerini Test Gezgini kullanarak çalıştırdığınızda, kod kapsamı bir seçenektir. Sonuçlar tablosu her derleme, sınıf ve yöntemi Çalıştır kod yüzdesini gösterir. Ayrıca, Kaynak Düzenleyicisi hangi kod test gösterir.

Kod kapsamı sonuçları ile renklendirme

Gereksinimler

  • Visual Studio Ultimate, Visual Studio Premium

Birim Testleri Test Gezgini üzerinde kod kapsamı analiz etmek için

  1. Üzerinde Test menüsünden seçin Kod kapsamı çözümleme.

  2. Hangi satırların çalışmasını görmek için Kod kapsamı renklendirme simgesini gösterKod kapsamı renkleri göster.

    Renkleri değiştirmek için veya kalın yüz kullanmak için seçin araçları, seçenekleri, ortam, yazı tiplerini ve renklerini, ayarlarını göster: Text Editor. Altında Öğeleri görüntüleme, kapsam maddeleri ayarlayın.

  3. Düşük Kapsam sonuçları göster, hangi kod parçalarını değil dahil ve bunları karşılamak için daha fazla test yazma araştırın. Geliştirme ekipleri için yaklaşık % 80 tipik olarak hedeflenir kod kapsamı. Bazı durumlarda, düşük kapsam kabul edilebilir. Örneğin, alt kapsamı bazı kodlar standart şablonundan oluşturulduğu kabul edilebilir.

İpucu

Doğru sonuç almak için:

  • Bu derleyici optimizasyonu kapalı olduğundan emin olun.

    (Yerel) yönetilmeyen kod ile çalışıyorsanız, bir hata ayýklama yapýsýnýn Confi kullanın.

  • Her derleme için (simge) .pdb dosyalarını oluşturmak emin olun.

Beklediğiniz sonuçları alamazsanız, bkz: Kod Kapsamı Sorunlarını Giderme.

Bloklar veya satırları raporlama

Kod kapsamı sayılı Bloklar. Bir blok, tek bir giriş ve çıkış noktası kodu parçasıdır. Programın denetim akışı bir test çalışması sırasında bir blok geçiyorsa, o blok anlatıldığı gibi sayılır. Blok kullanılma sayısı sonuç üzerinde etkisi yoktur.

Seçerek satırları gösterilen sonuçları da olabilir Sütun Ekle/Kaldır tablo üstbilgisi içinde. Test çalışmasına herhangi bir kod satırının tüm kod blokları kullandı, tek satır olarak sayılır. Dahil bazı kod blokları ve bazı bulunmayan bir satır yer alır Burada, kısmi bir çizgi olarak sayılır.

Bazı kullanıcı yüzdeleri daha yakından kaynak kodunda gördüğünüz parçacık boyutu karşılık çünkü satırların sayımını tercih eder. Çok sayıda satır kaplayan bile uzun bir blok hesaplama tek bir blok olarak sayılacaktır.

Kod kapsama sonuçlarını yönetme

Kod kapsamı sonuçları penceresi genellikle en son çalışma sonucunu gösterir. Sonuçları, testi verinizi değiştirirseniz veya testlerinizi her seferinde yalnızca bir bölümünü çalıştırırsanız değişir.

Kod kapsamı penceresi görünümü önceki kullanılabilir sonuçlarını veya diğer bilgisayarlarda elde edilen sonuçlar.

Birkaç sonuçlarınıza, örneğin farklı test verilerini kullanan çalışmaları sonuçları birleştirebilirsiniz.

  • Bir önceki sonuç kümesini görüntülemek için, aşağı açılan menüden seçin. Menü, yeni bir çözüm açtığınızda temizlenir geçici bir listesini gösterir.

  • Önceki oturumundan sonuçlarını görüntülemek için, seçim Kod kapsamı sonuçları almak, çözümünüzdeki test sonucu klasörüne gidin ve .coverage dosyasını alın.

    Karşılama renklendirme .coverage dosyasının oluşturulduğu kaynak kodunu değişmişse yanlış olabilir.

  • Sonuçları metin olarak okunabilir hale getirmek için, seçim Kod kapsamı sonuçları dışarı. Bu diğer araçlarla işlemek veya kolayca posta ile gönderme okunabilir .coveragexml dosyasını oluşturur.

  • Sonuçları başka birine göndermek için, .coverage dosyası veya dışa aktarılan .coveragexml dosyasını gönderin. Daha sonra dosyayı içe aktarabilirsiniz. Kaynak kodunun aynı sürüm varsa, Karşılama renklendirme görebilirler.

Farklı çalışmaları sonuçları birleştirme

Bazı durumlarda, test verilerine bağlı olarak farklı kod bloklarında kullanılacaktır. Bu nedenle, farklı test çalışmasının sonuçlarını birleştirmek isteyebilirsiniz.

Örneğin, giriş "2" ile bir test çalıştırdığınızda, % 50'si belirli bir işlev kapsamına giren bulduğunuz olduğunu varsayalım. Giriş-"2" ile ikinci kez test çalıştırdığınızda, diğer % 50'si işlev kapsamına giren görünüm renklendirme kapsamı içinde bakın. Şimdi, iki test çalışması sonuçlarını birleştirmek ve % 100'ünü işlev kapsamında rapor ve görünümü renklendirme kapsamını gösterir.

Kullanım Kod kapsamı penceresinde düğme birleştirme simgesiKod kapsamı sonuçları birleştirme Bunu yapmak için. Son çalışmaları veya alınan sonuçlar herhangi bir birleşimini seçebilirsiniz. Dışa aktarılan sonuç birleştirmek istiyorsanız, bunları önce almanız gerekir.

Kullanım Kod kapsamı sonuçları dışarı birleştirme işleminin sonuçlarını kaydetmek için.

Dd537628.collapse_all(tr-tr,VS.110).gifİçinde birleştirme sınırlamaları

  • Farklı sürümleri kod kapsamı verileri birleştirebilir, sonuçları ayrı olarak gösterilir, ancak değil birleştirilir. Tam olarak birleştirilmiş sonuçlar elde etmek için test verileri değiştirme kodun aynı yapıyı kullanın.

  • Dışa ve içe sonra sonuç dosyası birleştirirseniz, sadece sonuçları görüntüleyebilirsiniz çizgilerle bloklar tarafından değil. Kullanım Sütun Ekle/Kaldır komut satırı veri göstermek için.

  • Testleri asp.net Proje sonuçlarından birleştirirseniz, ayrı testlerin sonuçlarını görüntülenir ancak birleşik değil. Bu, yalnızca asp.net yapıları kendilerini geçerlidir: herhangi bir diğer derlemelere birleşik için sonuçlar.

Kod kapsamı sonuçları elemanları hariç

Örneğin metin şablondan oluşturulan kod kapsamı puanlarını kodunuzda belirli öğeler dışında isteyebilirsiniz. Öznitelik eklemek System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage için aşağıdaki kod öğelerini: sınıf, yapı, yöntemi, özelliği, özellik ayarlayıcı veya alıcı, olay. Bir sınıf hariç ondan türetilen sınıflardan dışarıda değil, dikkat edin.

Örne?in:

using System.Diagnostics.CodeAnalysis; 
...
public class ExampleClass1
{ 
    [ExcludeFromCodeCoverage]
    void ExampleMethod() {...}

    [ExcludeFromCodeCoverage] // exclude property
    int ExampleProperty1 
    { get {...} set{...}}

    int ExampleProperty2
    {
        get
        {
            ...
        }
        [ExcludeFromCodeCoverage] // exclude setter
        set
        {
            ...
        }
    }
 
}
[ExcludeFromCodeCoverage]
class ExampleClass2 { ... }
Imports System.Diagnostics.CodeAnalysis


Class ExampleClass1        
    <ExcludeFromCodeCoverage()>
    Public Sub ExampleSub1()
        ...
    End Sub

    ' Exclude property
    < ExcludeFromCodeCoverage()>
    Property ExampleProperty1 As Integer
        ...
    End Property

    ' Exclude setter
    Property ExampleProperty2 As Integer
        Get
            ...
        End Get
        <ExcludeFromCodeCoverage()>
        Set(ByVal value As Integer)
            ...
        End Set
    End Property
End Class

<ExcludeFromCodeCoverage()>
Class ExampleClass2
...
End Class
// A .cpp file compiled as managed (CLI) code.
using namespace System::Diagnostics::CodeAnalysis;
...
public ref class ExampleClass1
{
  public:
    [ExcludeFromCodeCoverage]
    void ExampleFunction1() { ... }
    
    [ExcludeFromCodeCoverage]
    property int ExampleProperty2 {...}

    property int ExampleProperty2 {
      int get() { ... }
     [ExcludeFromCodeCoverage]
      void set(int value) { ...  }
   }

}

[ExcludeFromCodeCoverage]
public ref class ExampleClass2
{ ... }

Dd537628.collapse_all(tr-tr,VS.110).gifYerel c++ kodunda elemanları hariç

c++ kodunda yönetilmeyen (yerel) öğeleri dışarıda bırakmak için:

#include <CodeCoverage\CodeCoverage.h>
...

// Exclusions must be compiled as unmanaged (native):
#pragma managed(push, off)

// Exclude a particular function:
ExcludeFromCodeCoverage(Exclusion1, L"MyNamespace::MyClass::MyFunction");

// Exclude all the functions in a particular class:
ExcludeFromCodeCoverage(Exclusion2, L"MyNamespace::MyClass2::*");

// Exclude all the functions generated from a particular template: 
ExcludeFromCodeCoverage(Exclusion3, L"*::MyFunction<*>"); 


// Exclude all the code from a particular .cpp file:
ExcludeSourceFromCodeCoverage(Exclusion4, L"*\\unittest1.cpp");

// After setting exclusions, restore the previous managed/unmanaged state:
#pragma managed(pop)

Aşağıdaki makroları kullanın:

-
ExcludeFromCodeCoverage(ExclusionName, L"fonksiyonadı");

ExcludeSourceFromCodeCoverage(ExclusionName, L"SourceFilePath");
  • ExclusionName herhangi bir benzersiz adı.

  • FunctionName tam işlev adı. Bu joker karakter içerebilir. Örneğin, bir sınıfın tüm işlevleri dışlamak için yazmaMyNamespace::MyClass::*

  • SourceFilePath yerel veya unc yolu, bir .cpp dosyasından. Bu joker karakter içerebilir. Aşağıdaki örnek, belirli bir dizindeki tüm dosyaları dışlar:\\MyComputer\Source\UnitTests\*.cpp

  • #include <CodeCoverage\CodeCoverage.h>

  • Dışlama makrolar için herhangi bir ad alanı veya sınıf içinde değil genel ad alanında çağrıları.

  • Dışlamalar birim test kod dosyası veya uygulama kod dosyasına yerleştirebilirsiniz.

  • Derleyici seçeneği ayarlayarak veya kullanarak (yerel) yönetimsiz kod dışlamalarını derlenmeli #pragma managed(off).

Not

Dışlamak işlevlerde c + +/ CLI özniteliğini uygulayın, kod [System::Diagnostics::CodeAnalysis::ExcludeFromCodeCoverage] işlevi.Bu C# aynıdır.

Dd537628.collapse_all(tr-tr,VS.110).gifİçerme veya Dışta Tutma ek öğeler

Kod kapsamı çözümleme yüklü olan ve bir .pdb dosyası .dll veya .exe dosyası ile aynı dizinde bulunan derlemeler üzerinde yapılır. Bu nedenle bazı durumlarda uygun .pdb dosyalarını alma dahil derlemelerin kümesini genişletebilirsiniz.

Daha fazla denetim üzerinde derlemeler ve öğeler için kod kapsamı çözümleme .runsettings dosyasına yazarak seçili alıştırma yapın. Örneğin, kendi sınıfları için öznitelikler eklemek zorunda kalmadan belirli tür derlemeleri dışlayabilirsiniz. Daha fazla bilgi için bkz. Kod Kapsamı Çözümlemeyi Özelleştirme.

Yapı Hizmeti, kod kapsamı çözümleme

Kodunuzda denetlediğinizde, testiniz diğer ekip üyelerinden gelen diğer tüm testlerle birlikte yapı sunucusunda çalışır. (Zaten bu ayarları yapmadıysanız, bkz: oluştur [Team-Foundation].) Tüm proje içinde en güncel ve kapsamlı resmi Karşılama verdiğinden, kod kapsamı yapı hizmetini çözümlemek yararlıdır. Otomatik sistem testleri ve geliştirme makinelerinde genellikle çalıştırmadığınız kodlanmış diğer testleri de içerecektir.

  1. Ekip Gezgininde, Builds 'i açın ve sonra ekleyin veya bir yapı tanımı düzenleyin.

  2. Üzerinde İşlem sayfasında, genişletin Otomatik Testler, Test Kaynağı, Ayarları Çalıştır. Ayarlayın Çalışma Ayarları Dosya Türleri için Etkin Kod Kapsamı.

    Birden fazla Test Kaynağı tanımı varsa, her biri için bu adımı yineleyin.

    • Ancak Çalışma Ayarları Dosya Türleri adlı bir alan yoktur.

      Bu Otomatik Testler altında, Test Derleme seçin ve [...] satır sonunda üç nokta yan yana düğmesini seçin . Bir Ekle/Düzenle Test Çalışması iletişim kutusu içinde, Test Çalıştırıcı altında, Visual Studio Test Çalıştırıcı seçin.

Yapı tanımı için kod kapsamı ayarlama

Yapı çalıştıktan sonra kod kapsamı sonuçları test çalıştırma bağlı ve yapı Özet olarak görünür.

Komut satırında kod kapsamı çözümleme

Komut satırından testleri çalıştırmak için vstest.console.exe kullanın. Kod kapsamı, bu yardımcı program bir seçenektir. Daha fazla bilgi için bkz. VSTest.Console.exe Komut Satırı Seçenekleri.

  1. Visual Studio Geliştirici komut istemini başlatın:

    Windows Start menüsünden seçin Tüm programları, Microsoft Visual Studio, Visual Studio Araçları, Geliştirici komut istemi.

  2. Çalıştır:

    vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage

Sorun Giderme

Kod kapsamı sonuçları görmüyorsanız, bkz: Kod Kapsamı Sorunlarını Giderme.

Dış kaynaklar

Dd537628.collapse_all(tr-tr,VS.110).gifKılavuz

Visual Studio 2012 – bölüm 2 ile sürekli teslimat için sınama: birim testi: iç sınama

Ayrıca bkz.

Kavramlar

Kod Kapsamı Çözümlemeyi Özelleştirme

Kod Kapsamı Sorunlarını Giderme

Kod birimi sınamaları kullanarak doğrulama