"InternalsVisibleTo" özniteliği, .Net için her tür "beyaz kutu" (sanırım on yılın terimi) testinin anahtarıdır. Önde "assembly" özniteliği olan herhangi bir c # dosyasına yerleştirilebilir. MS DOC'ların, eğer imzalanmışsa, derleme adının ortak anahtar belirteci tarafından nitelendirilmesi gerektiğini söylediğini unutmayın. Bazen bu işe yaramaz ve kişinin yerinde tam açık anahtarı kullanması gerekir. Dahili bileşenlere erişim, eşzamanlı sistemleri test etmek ve diğer birçok durumda anahtardır. Bkz. Https://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054 . Bu kitapta Meszaros, temelde program geliştirmeye yönelik "Test İçin Tasarım" yaklaşımını oluşturan çeşitli kodlama stillerini açıklamaktadır. En azından yıllarca bunu kullandım.
ADDED: Üzgünüm, bir süredir burada değildim. Bir yaklaşım Meszaros tarafından "alt sınıf test etme" yaklaşımı olarak adlandırılır. Yine, temel sınıfın dahili öğelerine erişmek için "internalsvisableto" kullanmak gerekir. Bu harika bir çözüm, ancak kapalı sınıflarda işe yaramıyor. "Test İçin Tasarım" öğrettiğimde, bunun test edilebilirliği sağlamak için temel sınıflara "önceden tasarlanmış" olması gereken şeylerden biri olduğunu öneriyorum. Neredeyse kültürel bir şey haline gelmelidir. Mühürsüz bir "temel" temel sınıf tasarlayın. Buna UnsealedBaseClass veya tek tip olarak tanınan bir şey deyin. Bu, test için alt sınıfa alınacak sınıftır. Ayrıca, genellikle yalnızca ortaya çıkardığı kurucularda farklılık gösteren sızdırmaz üretim sınıfını oluşturmak için alt sınıflara ayrılır. Nükleer endüstride çalışıyorum ve test gereksinimleri ÇOK ciddiye alınıyor. Bu yüzden her zaman bunları düşünmem gerekiyor. Bu arada, bir .Net uygulamasında "dahili" oldukları sürece, üretim kodunda test kancalarını bırakmak bizim alanımızda bir sorun olarak görülmemektedir. Bir şeyi test ETMEMENİN sonuçları oldukça derin olabilir.