2013-07-01 106 views
0

我正在嘗試爲拋出異常的異步方法編寫單元測試。使用Touch.Unit(NunitLite)測試異步方法中的異常

這是我的單元測試。我期待WebException。由於WebException不會立即返回,因此測試失敗。測試運行者退出時出現未處理的異常。

有沒有什麼方法在Touch.Unit異步方法中測試異常?

[Test] 
[ExpectedException(typeof(WebException))] 
public async void Throws_Exception_When_GetOrders() 
{ 
    DataService service = new DataService(); 
    await service.GetOrders(); 
} 

控制檯輸出

2013-07-01 16:46:08.552 TestsiOS[32724:c07] ExceptionsTests 
2013-07-01 16:46:09.855 TestsiOS[32724:c07]  [FAIL] Throws_Exception_When_GetOrders : System.Net.WebException was expected 

... 

Unhandled Exception: 
System.Net.WebException: Error: NameResolutionFailure 
    at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00065] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:947 
    at RestSharp.Http.GetRawResponseAsync (IAsyncResult result, System.Action`1 callback) [0x00000] in <filename unknown>:0 
... 

我試圖在我的測試方法返回任務。它只是忽略了我的測試方法。

​​

我自己也嘗試這個。測試運行結束。

public void Throws_Exception_When_GetOrders() 
{ 
    DataService service = new DataService(); 
    service.GetOrders().Wait(); 
} 
+0

我不知道Touch.Unit,但你有沒有嘗試改變你的方法到'async Task'?如果這不起作用,Touch.Unit可能不支持'async'測試。 – svick

+0

如果我將返回類型更改爲任務,它會忽略我的測試方法 –

回答