2012-06-16 10 views
19

Nie wiesz, czy jest to znany problem. Używam VS2012 RC (Ultimate) i Win8 Release Preview. Stworzyłem bibliotekę testów jednostkowych (aplikacja w stylu metra) i napisałem test jednostek, który zawiera słowa asynchroniczne/oczekujące. Jednak podczas kompilacji projektu testu jednostkowego Eksplorator testów jednostkowych nie pokazuje testu, który napisałem. Jeśli wykluczyć asynchroniczne/oczekujące słowa kluczowe, to Eksplorator testów jednostkowych pojawia się w teście, który właśnie napisałem. Czy ktoś już wcześniej zetknął się z tym, czy to tylko ja?Eksplorator testów jednostkowych nie pokazuje testów jednostek asynchronicznych dla aplikacji metra

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

Co stanie się, jeśli zwrócisz metodę "Zadanie"? – svick

+0

To interesujące. Zastanawiam się, czy mstest niewłaściwie filtruje metody w klasie, czy też słowo asynchroniczne zmienia sygnaturę tak, że nie pojawia się poprzez odbicie. – bryanbcook

+0

svick, dobrze. Zadanie sprawia, że ​​pojawia się w UTE. – Spock

Odpowiedz

28

metody testów jednostkowych, które są async musiał wrócić Task nie void.

Trudno jest śledzić metody async void: nie ma łatwego sposobu, aby biblioteka testów jednostkowych mogła stwierdzić, że test został zakończony. (Jest to trudne, ale myślę, że nie jest to niemożliwe, można to zrobić za pomocą niestandardowego SynchronizationContext.)