2010-11-18 25 views
0

C#/VS2008'de bir konsol uygulaması yazdım. Buna göre, herhangi bir erişilebilirlik belirteci belirtmeden bildirilen birden çok sınıf var.Erişilemiyor hatası: Konsol uygulaması ile NUnit

Namespace MyNamespace 
{ 
    Class MyClass 
    { 
    .. 

    } 
} 

Şimdi test amacıyla yeni bir konsol uygulaması ekledim. NUnit framework dll'ye referans ekledim. Ve sonra ana projem için bir referans dll. Ancak, MyCllass nesnesini TestFixture sınıfım içine oluşturmaya çalıştığımda, "MyNamespace.MyClass koruma düzeyi nedeniyle erişilemiyor gibi bir hata alıyorum"

Sınıfımı herkese açık olarak oluşturmam gerekiyor mu? Ama ya projem buna yetmezse? Projeniz bunu göze alamaz Eğer

namespace MyNamespace 
{ 
    public class MyClass 
    { 

    } 
} 

sen [InternalsVisibleTo] özniteliği bakmak olabilir:

cevap

4

sınıf bunu başka bir derlemesinden erişilebilir olmasını istiyorsanız public olması gerekiyor.

+0

Bunun anlamı - Bunu kamuya değiştiremezsem, NUnit kullanarak uygulamamı hiç test edemem? –

+1

Sadece NUnit ile değil, herhangi bir sınama çerçevesiyle. Ünite testlerinde her zaman yansımayı kullanabilirsin, ama bu kendini bacaklara vurmak gibi olurdu. Bu elbette uygulamanızı test edemediğiniz anlamına gelmez. Eğer bu sınıf halka açık değilse, yazar yazarın mevcut meclis dışında erişilebilir olmasını amaçlamadığı anlamına gelir. Bu sınıfa dahili olarak dayanan kamu yöntemlerini her zaman test edebilirsiniz ve dolaylı olarak da test edebilirsiniz. –

+0

Daha sonra, test dersimi ana projenin kendisinde alabilir miyim? o zaman testleri yürütmek için uygulama olacak mı? –

İlgili konular