有沒有人有過如何在Windows 8 Metro應用程序中單元測試異步方法的例子,以確保它會拋出所需的異常?針對特定異常的單元測試異步方法
考慮一類具有異步方法
public static class AsyncMathsStatic
{
private const int DELAY = 500;
public static async Task<int> Divide(int A, int B)
{
await Task.Delay(DELAY);
if (B == 0)
throw new DivideByZeroException();
else
return A/B;
}
}
我想寫使用新Async.ExpectsException施工的測試方法。我已經試過: -
[TestMethod]
public void DivideTest1()
{
Assert.ThrowsException<DivideByZeroException>(async() => { int Result = await AsyncMathsStatic.Divide(4, 0); });
}
當然,測試不等待異步方法來完成,因此,在一個失敗的測試結果,確定異常尚未拋出的,但。
這個工作在C#的其他版本精,但已從Windows 8 metro應用程序http://blogs.msdn中刪除。com/b/visualstudioalm/archive/2012/06/18/visual-studio-2012-rc-what-s-new-in-unit-testing.aspx – Peregrine
那麼,這是「有趣」!我已經更新了我的答案,以顯示如果Win8單元測試不支持它,如何實現「異步」兼容的'ThrowsException'。 –
謝謝斯蒂芬,確實有效,但我不敢相信這樣一個優雅的新功能似乎需要這樣的破解,尤其是看到Windows 8 Metro如此強調異步方法。希望Windows 8發佈之後的最終文檔將更加完善。 – Peregrine