SORU
30 EKİM 2008, PERŞEMBE


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
30 EKİM 2008, PERŞEMBE


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]);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blunty

    Blunty

    13 Mart 2006
  • Bratayley

    Bratayley

    30 Aralık 2010
  • Glove and Boots

    Glove and Bo

    1 ŞUBAT 2007