Я все еще в .NET 4.0, и мне было интересно, будет ли этот шаблон хорошо работать в различных ситуациях асинхронного модульного тестирования:
/// <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()
сохраняться вреальный мир?Я относительно новичок в формальном мышлении о модульном тестировании (особенно асинхронном модульном тестировании), поэтому, пожалуйста, не откладывайте на основы:)