2013-07-01 60 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

如果我将返回类型更改为任务,它会忽略我的测试方法 –

回答