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 
...

テスト メソッドで Task を返そうとしました。私のテストメソッドを単に無視します。

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 に答える