Aracılığıyla paylaş


Kod oluşturma, derleme ve Microsoft Fakes adlandırma kuralları

Bu konu Fakes kod oluşturma ve derleme seçeneklerini ve sorunlarını ele alır ve üretilen Fakes türleri, üyeler ve parametrelerini adlandırma kurallarını açıklar.

Gereksinimler

  • Visual Studio Ultimate

Bu konuda

Buradan bilgi edinebilirsiniz:

Code generation and compilation

Fakes Naming Conventions

Kod oluşturma ve derleme

Hh708916.collapse_all(tr-tr,VS.110).gifKoçanların kod oluşturma yapılandırması

Koçan türler oluşturulmasını .fakes dosya uzantısına sahip bir XML dosyasında yapılandırılır. Fakes framework MSBuild görevi özel yapım sürecinde birleştirir ve bu dosyaları derleme sırasında algılar. Fakes Kod Oluşturucusu bir derleme içine koçan türleri derler ve projeye başvuruyu ekler.

Aşağıdaki örnekte, FileSystem.dll içinde tanımlanan koçan türleri gösterilmektedir:

<Fakes xmlns="https://schemas.microsoft.com/fakes/2011/">
    <Assembly Name="FileSystem"/>
</Fakes>

Hh708916.collapse_all(tr-tr,VS.110).gifTür Filtreleme

Filtreler, koçan heline getirilmesi gereken türleri sınırlamak için .fakes dosyasında ayarlanabilir. StubGeneration öğesinin altındaki Temizle, Ekle, Kaldır öğelerini seçili türlerinin listesini oluşturmak için sınırsız sayıda ekleyebilirsiniz.

Örneğin, bu .fakes dosya türleri altında sistem ve System.IO ad alanları için yer tutucular oluşturur, ama sisteminde "İşleme" içeren her türlü çıkarır:

<Fakes xmlns="https://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="mscorlib" />
  <!-- user code -->
  <StubGeneration>
    <Clear />
    <Add Namespace="System!" />
    <Add Namespace="System.IO!"/>
    <Remove TypeName="Handle" />
  </StubGeneration>
  <!-- /user code -->
</Fakes>

Filtre dizeleri eşleşmenin nasıl yapılması gerektiğini belirlemek için basit bir dil bilgisi kullanır:

  • Filtreler varsayılan olarak büyük küçük harf duyarlıdır; filtreler alt dize karşılaştırması uygular:

    el "hello" ile eşleşir

  • Filtre sonuna ! ekleme kesin bir büyük küçük harf duyarlı eşleşme yapar:

    el! "hello" ile eşleşmez.

    hello! "hello" ile eşleşir

  • Filtre sonuna * ekleme eşleşmeyi dizenin önek kısmına kadar yapacaktır:

    el* "hello" ile eşleşmez.

    he* "hello" ile eşleşir

  • Noktalı virgülle ayrılmış bir listede birden çok filtre ayırım yaparak birleştirilebilir.

    el;wo"Merhaba" ve "dünya" ile eşleşir.

Hh708916.collapse_all(tr-tr,VS.110).gifSomut sınıflar ve sanal yöntemleri koçan yapma

Varsayılan olarak, koçan türleri korumalı olmayan tüm sınıflar için oluşturulur. .Fakes yapılandırma dosyasıyla sınıflarının soyut koçan türlerini kısıtlamak mümkündür:

<Fakes xmlns="https://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="mscorlib" />
  <!-- user code -->
  <StubGeneration>
    <Types>
      <Clear />
      <Add AbstractClasses="true"/>
    </Types>
  </StubGeneration>
  <!-- /user code -->
</Fakes>

Hh708916.collapse_all(tr-tr,VS.110).gifTanımlayıcı ad imzalama

Shimmed derleme güçlü imzalandığında Fakes framework otomatik olarak oluşturulan Fakes derlemeleri imzalar. Derlemeyi imzalamada kullanılacak farklı bir anahtar kullanıcı tarafından belirtmediği sürece Fakes framework her zaman aynı anahtarı kullanır. .fakes dosyasında farklı bir anahtar belirtilebilir.

<Fakes ...>
  <Compilation KeyFile="path to the key file" />
</Fakes>

Hh708916.collapse_all(tr-tr,VS.110).gifDahili türler

Fakes kod oluşturucusu üretilen fakes derlemeye görülebilen shim/dolgu türlerini ve koçan türleri oluşturacaktır. Dahili türleri görünür hale getirmek için oluşturulan Fakes derleme için görünürlük sağlayan shimmed derlemelere InternalsVisibleTo özniteliği ekleyebilirsiniz.

[assembly: InternalsVisibleTo("FileSystem.Fakes")]

Eğer shimmed derleme güçlü imzalarsa Fakes framework otomatik olarak oluşturulan Fakes derlemeleri imzalar. Bu durumda, InternalsVisibleToAttribute özniteliği ortak anahtarın yanı sıra derleme adına da başvuru ihtiyaç duyar. Fakes framework her zaman derlemeyi imzalamak için aynı anahtarı kullanır, böylece bu küçük parçayı projenize InternalsVisibleTo özniteliği eklemek için bir başlangıç noktası olarak kullanırsınız.

[assembly: InternalsVisibleTo("FileSystem.Fakes, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e92decb949446f688ab9f6973436c535bf50acd1fd580495aae3f875aa4e4f663ca77908c63b7f0996977cb98fcfdb35e05aa2c842002703cad835473caac5ef14107e3a7fae01120a96558785f48319f66daabc862872b2c53f5ac11fa335c0165e202b4c011334c7bc8f4c4e570cf255190f4e3e2cbc9137ca57cb687947bc")]

Hh708916.collapse_all(tr-tr,VS.110).gifDerleme zamanlarını optimize etme

Fakes derlemelerinin derlemesi yapım sürenizi önemli ölçüde artırabilir. Ayrı merkezi bir proje içinde .Net System derlemeleri ve üçüncü parti derlemeler için Fakes derlemeler oluşturarak derleme zamanını en aza indirebilirsiniz. Bu tür derlemeler makinenizde nadiren değiştiği için oluşturulan Fakes derlemeleri diğer projelerde yeniden kullanabilirsiniz.

Birim test projelerinizden proje klasöründeki FakesAssemblies altında yerleştirilen derlenmiş Fakes derlemelerden açıkça başvuru alabilirsiniz.

  1. Test projelerinizle eşleşen .Net çalışma zamanı sürümünü ile yeni bir Sınıf Kitaplığı oluşturun. Fakes.Prebuild diye çağıralım. Class1.cs dosyasını projeden kaldırın, gerekli olmayan.

  2. Fakes için gereken tüm sistem ve üçüncü parti derlemelere başvuru ekleyin.

  3. Her derleme ve yapılandırma için bir .fakes dosyası ekleyin.

  4. Test projenizden bir derleme başvurusu ekleyin ve Fakes.Prebuild\FakesAssemblies klasörüne gidin ve uygun derlemeyi bulun.

Hh708916.collapse_all(tr-tr,VS.110).gifDerleme adı çarpışmasından kaçının

Bir Takım Derleme ortamında, tüm yapı çıkışları tek bir dizin içinde birleştirilir. Fakes kullanan birden fazla proje söz konusu olduğunda, farklı sürümden Fakes derlemeler birbirini geçersiz kılma meydana getirebilir. Örneğin, .Net Framework 2.0 mscorlib.dll TestProject1 fakes ve .Net Framework 4 mscorlib.dll TestProject2 fakes her ikisi de bir mscorlib.fakes.Fakes.dll Fakes derlemesi elde eder.

Bu sorunu önlemek için Fakes, .fakes dosyaları eklerken proje-olmayan başvurular için otomatik olarak sürüm nitelikli Fakes derlemesi oluşturması gerekir. Bir sürüm nitelikli Fakes derleme adı Fakes derleme adı oluştururken bir sürüm numarası gömer:

Verilen bir derleme MyAssembly ve sürüm ise Fakes derleme adı MyAssembly.1.2.3.4.Fakes'dir.

.fakes içindeki Derleme öğesinin Version özniteliğini düzenleyerek bu sürümü kaldırın ya da değiştirin:

attribute of the Assembly element in the .fakes:
<Fakes ...>
  <Assembly Name="MyAssembly" Version="1.2.3.4" />
  ...
</Fakes>

Fakes adlandırma kuralları

Hh708916.collapse_all(tr-tr,VS.110).gifDolgu ve koçan türleri adlandırma kuralları

Ad Uzayları

  • .Fakes sonekini ad alanına eklenir.

    Örneğin, System.Fakes ad alanı System ad alanının shim/dolgu türlerini içerir.

  • Global.Fakes boş ad alanını dolgu türünü içerir.

Tür adları

  • Dolgu/Shim öneki dolgu türü adı yapılandırmak için tür adına eklenir.

    Örneğin, ShimExample Example türünün shim türüdür.

  • Stub öneki stub türü adı yapılandırmak için tür adına eklenir.

    Örneğin, StubIExample IExample türünün stub türüdür.

Tür Argümanları ve İç İçe Tür Yapıları

  • Genel/Generic tür argümanları kopyalanır.

  • İç içe tür yapıları shim türleri için kopyalanır.

Hh708916.collapse_all(tr-tr,VS.110).gifShim temsilci özelliği veya stub temsilci alanı adlandırma kuralları

Temel kurallar adlandırma alanı için, boş bir isimden başlama:

  • Yöntem adı eklenir.

  • Eğer yöntem adı açık bir arabirim uygulaması ise noktalar kaldırılır.

  • Eğer yöntem genelse, Ofn eklenir, n 'in generic yöntem argümanlarının sayısı olan yerde.

Özel yöntem adları gibi özellik alıcı veya ayarlayıcılar aşağıdaki tabloda açıklandığı gibi davranırlar.

Eğer metot... ise

Örnek

Yöntem adı eklenmiş

Bir Oluşturucu

.ctor

Constructor

Bir statik yapıcı

.cctor

StaticConstructor

Bir erişimci yöntemi ile iki kısımdan adı "_" (örneğin, özellik alıcıları) tarafından ayrılmış

kind_name (ortak büyük/küçük harf, ancak ECMA tarafından zorlanan değil)

NameKind, her iki parçası da büyük harf haline gelmek ve takaslanmak zorunda olan yerde

Özelliğin alıcısı Prop

PropGet

Özelliğin ayarlayıcısı Prop

PropSet

Olay ekleyici

Add

Olay kaldırıcısı

Remove

Bir işleç iki bölümden oluşur

op_name

NameOp

Örneğin: + işleci

op_Add

AddOp

Bir dönüştürme işleciiçin, dönüş türü eklenir.

T op_Implicit

ImplicitOpT

Notlar

  • Dizin oluşturucuların alıcıları ve ayarlayıcıları özelliğe benzer şekilde davranır. Bir dizin oluşturucu için varsayılan ad Item.

  • Parametre türü adları dönüştürülür ve birleştirilir.

  • Dönüş türü aşırı yükleme belirsizliği olmadıkça göz ardı edilir. Eğer bu durumsa, dönüş türü adın sonuna eklenir

Hh708916.collapse_all(tr-tr,VS.110).gifParametre türü adlandırma kuralları

Verilen

Eklenen dize...

Bir Tür T

T

Ad alanı, iç içe yapı ve genel tikler iptal edilir.

Bir dışarı parametresi out T

TOut

Bir ref parametresi ref T

TRef

Bir dizi/array türü T[]

TArray

Bir çok boyutlu dizi türü T[ , , ]

T3

Bir pointer/işaretçi türü T*

TPtr

Bir genel/generic tür T<R1, …>

TOfR1

Bir genel tür argümanı !i C<TType> türünün

Ti

Bir genel metot argümanı !!i M<MMethod> metodunun

Mi

Bir iç içe tür N.T

N eklenir, daha sonra T

Hh708916.collapse_all(tr-tr,VS.110).gifÖzyinelemeli kurallar

Aşağıdaki kurallar özyinelemeli olarak uygulanır:

  • Fakes kullandığı için C# Fakes derlemeler oluşturmak için geçersiz bir C# belirteç üretir herhangi bir karakter önce "_" (alt çizgi).

  • Eğer son halini alan ad tanıtılan türün her hangi bir üyesiyle çarpışırsa, 01'den başlayan iki basamaklı sayılar ekleyen bir sayaç kullanarak bir numaralandırma şeması kullanılır.

Dış kaynaklar

Hh708916.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

Microsoft Fakes ile Test Edilen Kodu Yalıtma