2012-11-26 12 views
8

Yani, derlememde sınamak istediğim sınıf tarafından kullanılan bir grup iç sınıfım var. Erişimciler VS2012'den kaldırıldığından, [InternalsVisibleTo]'u kullanıyorum ve bu harika çalışıyor ... iç sınıflarımı parçalamayı denediğimde, Fakes çerçevesine görünmezler. Ayrıca ele aldığım belirli bir sınıfın statik yöntemlerle statik bir sınıf olduğunu ve organizasyondaki direnç düzeyinden dolayı kuruluşun direncinden ötürü arayüzleri kullanmak için (ve taslakları kullanarak) her şeyi yeniden gözden geçirmek istemediğimi de belirtmeliyim.VS 2012'de Fakes Framework şimleri ile iç sınıflar nasıl taklit edilir/yalıtılır?

Visual Studio 2012'de bu iç üyelerin, her şeyi arabirim oluşturmaya başvurmadan, bu iç üyeler tarafından kullanılabilir olmasını sağlamanın bir yolu var mı?

cevap

20

Aşağıdaki sayfa, dahili türlerin oluşturulan sahte montaj grubuna nasıl görüneceğini açıklamaktadır. http://msdn.microsoft.com/en-us/library/hh708916.aspx#bkmk_internal_types

diyor hangisi:

Sahte kod üreteci oluşturulan Sahte montaj görebildiği türleri için şim türleri ve saplama türlerini üretecektir. Takılmış bir montaj parçasını Fakes'e ve test tertibatınıza görünür hale getirmek için, oluşturulan Fakes tertibatına ve test tertibatına görünürlük sağlayan, shimmed montaj koduna InternalsVisibleToAttribute özniteliklerini ekleyin.

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

Ayrıca dahili tip hedef aksamından test düzeneği erişime izin vermek için bir InternalsVisibleToAttribute gerekir. Diğer bir deyişle, şunlara gereksiniminiz vardır:

[assembly: InternalsVisibleTo("TargetAssembly.Fakes")] 
[assembly: InternalsVisibleTo("TestAssembly")] 
+0

Gerçekten de bunu denediğimde ve iç arabirimlerimden hiçbiri görünmüyor. Ben sadece kamu arayüzleri için taslakları alıyorum. Asıl sorunun şimşeklerle ilgili olduğunu biliyorum - bunu dahili arayüzler için çalışmak için çalıştırabildiniz mi? –

+2

MSDN sayfasını güncelleme sürecindeyiz. Ayrıca, test grubunuzun hedef gruplara iç düzene erişmesine izin vermek için bir InternalsVisibleToAttribute'a ihtiyacınız vardır. Diğer bir deyişle, gerekenler: [assembly: InternalsVisibleTo ("TargetAssembly.Fakes")] [assembly: InternalsVisibleTo ("TestAssembly")] –

+4

kaçırdığım bu msdn sayfasından önemli not: 'Fakes framework aynı kullanır tüm üretilen assemblies' imzalamak için anahtar, böylece imza DAİMA olmalıdır eğer genel anahtar 'PublicKey = 0024000004800000940000000602000000240000525341310004000001000100e92decb949446f688ab9f6973436c535bf50acd1fd580495aae3f875aa4e4f663ca77908c63b7f0996977cb98fcfdb35e05aa2c842002703cad835473caac5ef14107e3a7fae01120a96558785f48319f66daabc862872b2c53f5ac11fa335c0165e202b4c011334c7bc8f4c4e570cf255190f4e3e2cbc9137ca57cb687947bc' Bu işlerle kaydoluyorsanız! Bunu yakalamak beni sonsuza kadar sürdü! –

İlgili konular