私は.NET 4.0でまだだと私はこのパターンが非同期ユニットテストの状況の様々な種類にもホールドアップするかどうかを疑問に思った:MsTest with Task.ContinueWith()and Task.Wait()...?
/// <summary>
/// Noaa weather test: should read remote XML.
/// </summary>
[TestMethod]
public void ShouldReadRemoteXml()
{
var uri = new Uri("http://www.weather.gov/xml/current_obs/KLAX.xml");
var wait = HttpVerbAsyncUtility.GetAsync(uri)
.ContinueWith(
t =>
{
Assert.IsFalse(t.IsFaulted, "An unexpected XML read error has occurred.");
Assert.IsTrue(t.IsCompleted, "The expected XML read did not take place.");
if(t.IsCompleted && !t.IsFaulted)
FrameworkFileUtility.Write(t.Result, @"NoaaWeather.xml");
})
.Wait(TimeSpan.FromSeconds(7));
Assert.IsTrue(wait, "The expected XML read did not take place within seven seconds.");
}
このTask.ContinueWith()...Task.Wait()
パターンは現実の世界でホールドアップでしょうか?私は、ユニットテスト(特に非同期ユニットテスト)について正式に考えるのは比較的新しいので、基本的なことを思いとどまらないでください:)
完全なソースコードを扱う最終的な解決策はありますか?多分、各スレッドの通知エラーのためのより複雑なサンプルであり、WaitAllの後に要約が表示されますか? – Kiquenet
@Kiquenetあなたが求めているすべてのものは、箱から取り出してください。私はMSTestでの非同期サポートが存在しないと思うので、XUnitが代わりになるかもしれません[http://sravi-kiran.blogspot.com/2012/11/UnitTestingAsynchronousMethodsUsingMSTestAndXUnit.html] – rasx