2012-06-16 96 views
19

不確定這是一個已知問題。我使用VS2012 RC(Ultimate)和Win8 Release Preview。我創建了一個單元測試庫(metro style app),並編寫了一個單元測試,其中包含異步/等待關鍵字。但是,當我編譯單元測試項目時,單元測試瀏覽器不顯示我寫的測試。如果我排除了異步/等待關鍵字,那麼單元測試瀏覽器就出現在我剛寫的測試中。有沒有人遇到過這個,還是隻是我?單元測試資源管理器不顯示適用於metro應用程序的異步單元測試

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

如果你讓方法返回一個'Task'會發生什麼? – svick

+0

這很有趣。我想知道mstest是不正確地過濾類中的方​​法還是async關鍵字會改變簽名,使得它不會通過反射出現。 – bryanbcook

+0

svick,你說得對。任務使其顯示在UTE中。 – Spock

回答

28

單元測試方法是async必須返回Task,不void

這是因爲async void方法很難跟蹤:單元測試庫找不到測試完成的簡單方法。 (這很難,但我認爲這不是不可能的,你可以通過使用自定義SynchronizationContext來做到這一點。)