Birim olay C geçirilen test#
PropertyChanged
olayları başlatan bazı kodlar var ve olayları doğru kaldırdı ediliyor test ünitesi için mümkün olmak istiyorum.
Olayları büyütmek kod gibi
public class MyClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public string MyProperty
{
set
{
if (_myProperty != value)
{
_myProperty = value;
NotifyPropertyChanged("MyProperty");
}
}
}
}
Delegeler kullanan birim testleri aşağıdaki kodu güzel ve yeşil bir test olsun,:
[TestMethod]
public void Test_ThatMyEventIsRaised()
{
string actual = null;
MyClass myClass = new MyClass();
myClass.PropertyChanged = delegate(object sender, PropertyChangedEventArgs e)
{
actual = e.PropertyName;
};
myClass.MyProperty = "testing";
Assert.IsNotNull(actual);
Assert.AreEqual("MyProperty", actual);
}
Ben o zaman denemek ve birlikte özelliklerinin ayarlanması gibi zincir ancak:
public string MyProperty
{
set
{
if (_myProperty != value)
{
_myProperty = value;
NotifyPropertyChanged("MyProperty");
MyOtherProperty = "SomeValue";
}
}
}
public string MyOtherProperty
{
set
{
if (_myOtherProperty != value)
{
_myOtherProperty = value;
NotifyPropertyChanged("MyOtherProperty");
}
}
}
Organizasyon için bir test başarısız - yakalar bu olay MyOtherProperty için bir olaydır.
Bu olayı eminim, benim UI yaptığı gibi tepki verir, ama benim temsilci sadece yangın için son olay yakalar.
Bu yüzden şunu merak ediyorum:
1. Test olaylar benim yöntem doğru mu?
2. Yetiştirme yöntemimzincirlemeolayları doğru mu?
CEVAP
Yaptığın her şey doğru, senin test "oluşturuldu son olay Nedir?" sormak istediğin vermektedir
Kodunuzu bu iki olay tetikleme, bu sırayla
- (... "Benim Malım" ...) . Özelliği Değişti
- (... "" ... ) MyOtherProperty . Özelliği Değişti
Bu "doğru" ya da değil, bu olayların amacı bağlıdır.
Eğer gündeme alır olay sayısı ve yetiştikleri almak amacıyla test etmek isterseniz, kolayca mevcut test uzatabilirsiniz:
[TestMethod]
public void Test_ThatMyEventIsRaised()
{
List<string> receivedEvents = new List<string>();
MyClass myClass = new MyClass();
myClass.PropertyChanged = delegate(object sender, PropertyChangedEventArgs e)
{
receivedEvents.Add(e.PropertyName);
};
myClass.MyProperty = "testing";
Assert.AreEqual(2, receivedEvents.Count);
Assert.AreEqual("MyProperty", receivedEvents[0]);
Assert.AreEqual("MyOtherProperty", receivedEvents[1]);
}
Nasıl bir birim İfade ile yolları test...
Nasıl birim Temel Veri kullanıyorum şi...
Nasıl birim dişli kod test yapmalıyım?...
Void yöntemleri birim test?...
Nasıl insanlar Etmeniz SQL için kullan...