Laden...

Unit Test mit Dispatcher

Erstellt von baensch vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.844 Views
B
baensch Themenstarter:in
135 Beiträge seit 2010
vor 13 Jahren
Unit Test mit Dispatcher

Habe ein Programm mit einem Dispatcher geschrieben

Leider musste ich feststellen, dass bei jedem versuch diese Methode mit dem Dispatcher zu testen eine NullReferenceExciption kommt.

hat jemand eine Lösung wie ich diese Methode mit dem Dispatcher trotzdem testen kann?
mfg bensch


while(!asleep)
{
    sheep++;
}

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo baensch,

hier wirst du auch nicht konkreter als in Klassen in WPF laden ...

diese Methode

Welche Methode?

NullReferenceExciption

Mit welchem Inhalt?

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

B
baensch Themenstarter:in
135 Beiträge seit 2010
vor 13 Jahren

Das sind meine 2 Methoden und das zugehörige Event ich rufe im Unittest StartTimeoutTimer() auf


         internal void StartTimeoutTimer()
        {

            Application.Current.Dispatcher.BeginInvoke((Action)(() => { this.TimoutTimerStart(); }));
        }
        
        private void TimoutTimerStart()
        {
            _timeoutTimer = new DispatcherTimer();
            _timeoutTimer.Interval = TimeSpan.FromSeconds(this.Timeout);
            _timeoutTimer.Tick += new EventHandler(timeout_Tick);
            _timeoutTimer.Start();
        }
        void timeout_Tick(object sender, EventArgs e)
        {
            this._timeEvent = true;
        }

Danach kommt diese Fehlermeldung:

Null Reference Exception Occured
Object reference not set to an instance of an object.


while(!asleep)
{
    sheep++;
}

B
baensch Themenstarter:in
135 Beiträge seit 2010
vor 13 Jahren

Hallo
ich habe nun versucht den Fehler zu finden den ich gemacht habe.
Im StackTrace steht folgendes

at RoboConnectModel.RoboConnectDM.ConnectDisconnect() in D:\Datein\Projekte\F&E\C#Aufgaben\WPML_Aufgabe\20100428_1.0_Generate_Code\RoboConnectVM\RoboConnectDM.cs:line 403

die zeile 403 ist diese


Application.Current.Dispatcher.BeginInvoke((Action)(() => 

danach folgt nur mehr


{ this.StartMonitoring(); }));

Deshalb meine Frage was kann ich bei einem Dispatcher alles falsch machen gibt es noch etwas außer dieser Zeile, dass ich bei einem Dispatcher machen muss?


while(!asleep)
{
    sheep++;
}

5.742 Beiträge seit 2007
vor 13 Jahren

Hallo baensch,

abstrahiere den Dispatcher und den Timer einfach durch je ein Interface und lasse dir den Timer von einem DependencyInjection-Container erzeugen. Dann kannst du in den UnitTests einfach Stubs verwenden.