Les tests unitaires que les événements sont déclenchés en C# (dans l'ordre)

J'ai un code qui pose PropertyChanged événements et je voudrais être en mesure de test de l'unité que les événements sont élevés correctement.

Le code qui est d'élever les événements, c'est comme

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

Je reçois un joli vert d'essai à partir du code suivant dans mes tests unitaires, qui utilise des délégués:

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

Cependant, si je puis essayer de la chaîne et le réglage des propriétés de l'ensemble comme suit:

public string MyProperty
{
    set
    {
        if (_myProperty != value)
        {
            _myProperty = value;
            NotifyPropertyChanged("MyProperty");
            MyOtherProperty = "SomeValue";
        }
    }
}

public string MyOtherProperty
{
    set
    {
        if (_myOtherProperty != value)
        {
            _myOtherProperty = value;
            NotifyPropertyChanged("MyOtherProperty");
        }
    }
}

Mon test pour le cas d'échec - l'événement qu'il capture est le cas pour la MyOtherProperty.

Je suis sûr que l'événement se déclenche, mon INTERFACE réagit comme il le fait, mais mon délégué ne retient que le dernier événement à feu.

Alors je me demandais:

1. Est ma méthode de dépistage correct?

2. Est ma méthode de collecte de enchaîné événements correct?

InformationsquelleAutor David Hall | 2008-10-30