in src/Microsoft.VisualStudio.Extensibility.Testing.Xunit.Shared/Threading/InProcessIdeTestInvoker.cs [217:255]
protected override Task AfterTestMethodInvokedAsync()
{
foreach (var beforeAfterAttribute in _beforeAfterAttributesRun)
{
var attributeName = beforeAfterAttribute.GetType().Name;
if (!MessageBus.QueueMessage(new AfterTestStarting(Test, attributeName)))
{
CancellationTokenSource.Cancel();
}
Aggregator.Run(() =>
{
Timer.Aggregate(() =>
{
try
{
beforeAfterAttribute.After(TestMethod);
}
catch (Exception ex) when (DataCollectionService.LogAndPropagate(ex))
{
throw ExceptionUtilities.Unreachable;
}
});
});
if (!MessageBus.QueueMessage(new AfterTestFinished(Test, attributeName)))
{
CancellationTokenSource.Cancel();
}
}
#if NET472
return Task.CompletedTask;
#else
var tcs = new TaskCompletionSource<bool>();
tcs.SetResult(true);
return tcs.Task;
#endif
}