0

我正在尝试为引发异常的异步方法编写单元测试。

这是我的单元测试。我期待 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 async Task Throws_Exception_When_GetOrders()

我也试过这个。并且试运行挂断了。

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

1 回答 1

1

Xamarin.iOs 6.3 已更新 Touch.Unit,它现在支持测试异步方法。 https://bugzilla.xamarin.com/show_bug.cgi?id=14312

于 2013-07-12T00:50:36.353 回答