2012-06-16 5 views
19

nicht sicher, dass dies ein bekanntes Problem ist. Ich verwende VS2012 RC (Ultimate) und Win8 Release Preview. Ich habe eine Unit-Test-Bibliothek (Metro-Stil-App) erstellt und einen Unit-Test geschrieben, der async/await-Schlüsselwörter enthält. Wenn ich das Unit-Test-Projekt kompiliere, zeigt Unit Test Explorer den von mir geschriebenen Test nicht an. Wenn ich die async/await-Schlüsselwörter ausschließe, erscheint der Unit Test Explorer im Test, den ich gerade geschrieben habe. Ist jemand schon einmal damit konfrontiert worden, oder bin es nur ich?Einheit Test Explorer nicht zu sehen Async Unit Tests für Metro-Apps

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public async void SomeAsyncTest() 
    { 
     var result = await StorageFile.GetFileFromPathAsync("some file path"); 
    } 
} 
+1

Was passiert, wenn Sie die Methode machen zurückgeben 'Task'? – svick

+0

Das ist interessant. Ich frage mich, ob mstest falsch Methoden innerhalb der Klasse Filterung oder wenn das Asynchron Schlüsselwort die Signatur so verändert, dass es nicht durch Reflexion erscheint. – bryanbcook

+0

svick, hast du recht. Aufgabe macht es in der UTE erscheinen. – Spock

Antwort

28

Unit-Test-Methoden, die async sind, haben Task zurückzukehren, nicht void.

Das liegt daran, async void Methoden sind schwer zu verfolgen: Es gibt keinen einfachen Weg für die Unit-Test-Bibliothek, um herauszufinden, dass der Test abgeschlossen. (Es ist hart, aber ich denke, dass es nicht unmöglich ist. Sie können dies tun, indem Sie eine benutzerdefinierte SynchronizationContext verwenden.)