2011-07-12 40 views
6

Sadece bir üyeyi işaretlemek için kullanılan custom attribute var (constructor yok, properties yok):Birim Özel bir özellik sınıfını test etme

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = true)] 
public sealed class MyCustomAttribute : Attribute { } 

Bunu nasıl test edebilirim? Ve, açıklığa kavuşturmak için ... 'ne', ama 'nasıl' olduğunu biliyorum '

Uygun AttributeUsage'ün yerinde olduğundan emin olmak için birim test etmenin bir yolu olduğunu mu varsayıyorum? Peki bunu nasıl yapabilirim? Sahte bir sınıf oluşturduğumda ve özniteliği yanlış bir şeye eklemeyi denediğimde, derleme yapmama izin vermez, bu yüzden test etmek için kötü bir alay sınıfı nasıl oluşturabilirim?

+0

@Kornelije: Ona unvanını sabit. Eğer ismini tıklarsan, oradaki son sorunundan başlığı bırakmış olmalı. :) –

+0

Yea, bunun için üzgünüm. Firefox benim için de aynı soru ve unvanı zaten giriş formuna taşıdı. Başlığı değiştirmeyi unuttum. – michael

+1

@michael,% 100 kod kapsamına mı ihtiyacınız var? :-) –

cevap

10

Bunu test etmek için sahte bir sınıf oluşturamazsınız. Bunun yerine, uygun AttributeUsageAttribute öznitelik özelliklerine sahip olup olmadığını görmek için öznitelik sınıfının kendisini sınamanız gerekir. vay, ne ağız dolusu

[TestMethod] 
public void Is_Attribute_Multiple_False 
{ 
    var attributes = (IList<AttributeUsageAttribute>)typeof(MyCustomAttribute).GetCustomAttributes(typeof(AttributeUsageAttribute), false); 
    Assert.AreEqual(1, attributes.Count); 

    var attribute = attributes[0]; 
    Assert.IsFalse(attribute.AllowMultiple); 
} 

//Etc.