2012-06-16 20 views
19

Bunun bilinen bir sorun olduğundan emin değilsiniz. VS2012 RC (Ultimate) ve Win8 Release Preview kullanıyorum. Bir Birim Test Kütüphanesi (metro stili uygulaması) oluşturdum ve anahtar kelimeleri asenkron/beklemeyi içeren bir Birim Testi yazdım. Ancak, Birim Testi projesini derlediğimde, Birim Test Gezgini, Yazdığım Test'i göstermiyor. Async/await anahtar kelimelerini hariç tutarsam, o zaman Test Yazarı'nda Test Test Gezgini görünür. Daha önce bununla karşılaştı mı, yoksa sadece ben mi? async olanBirim Test Gezgini, metro uygulamaları için Async Unit Tests görünmüyor

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

Yöntem bir "Görev" döndürürseniz ne olur? – svick

+0

Bu ilginç. Eğer mstest sınıf içindeki yöntemleri yanlış filtreliyorsa ya da async anahtar sözcüğü imzayı değiştirmeyecek şekilde değiştiriyorsa merak ediyorum. – bryanbcook

+0

svick, haklısın. Görev, UTE'de görünmesini sağlar. – Spock

cevap

28

Birim test yöntemleri Task değil void dönmek zorunda.

Bunun nedeni, async void yöntemlerinin izlenmesinin zor olmasıdır: ünite test kitaplığının testin tamamlandığını öğrenmesi için kolay bir yol yoktur. (Zor, ama imkansız değil. Özel bir SynchronizationContext kullanarak bunu yapabilirsiniz.)