Application.Current ist Null für Komponententests

8

Ich habe einige Methoden in der Codebasis, die auf Application.Current.Dispatcher.Invoke ... angewiesen sind, um sicherzustellen, dass die Dinge auf dem GUI-Thread laufen. Ich versuche derzeit, Komponententests für diese Methoden zu schreiben, aber (wie erwartet) Application.Current ist null, also erhalte ich eine NullReferenceException.

Ich habe versucht, die betroffenen Tests in ihrer eigenen AppDomain auszuführen, wie hier vorgeschlagen: Ссылка

Aber Application.Current ist immer noch null, wenn ich das tue. Sollte das Starten einer AppDomain nicht den Application.Current für mich einstellen? Warum ist es immer noch null?

Mein Code: Die Basisklasse:

%Vor%

Der Test der aufrufenden Einheit (enthalten in einer Klasse, die von UnitTest erbt):

%Vor%     
KrisTrip 27.09.2012, 16:21
quelle

3 Antworten

10

So, jetzt habe ich einen fiesen Workaround. Ich habe im Grunde alle Tests, die Testmethoden, die Application.Current verwenden, zu einem einzigen Test verschoben (so dass sie alle in demselben Thread sind) und neue Application () aufgerufen.

Der böse Code:

%Vor%     
KrisTrip 27.09.2012 19:53
quelle
0

Diese Problemumgehung funktioniert für mich:

%Vor%     
DimitarKurtev 11.07.2014 11:05
quelle
-1

Versuchen Sie, das Attribut Serializable zu entfernen und stattdessen die Klasse UnitTest von MarshalByRefObject abzuleiten.

    
Panos Rontogiannis 27.09.2012 16:42
quelle