я написал следующий тест пытается использовать новый асинхронном/ждут ключевых слов, доступных в .NET 4.5:C# NUnit не работает тесты асинхронно
[Test]
public async void DefaultFilesValid()
{
LogTest(log);
var libraryTasks = new List<Task<string>>();
foreach (var def in LibrariesModel.LibraryDefinitions)
{
IViewModel viewModel = (IViewModel)ReflectionUtility.CreateNew(def.ModelType);
var libraries = def.LibraryFiles.Where(f => def.IsDefaultFile(f)).ToArray();
foreach(var library in libraries)
{
var libraryTask = LoadEmbeddedLibraryAsync(viewModel, library);
libraryTasks.Add(libraryTask);
}
}
// Wait for the results
var libraryErrors = await Task.WhenAll(libraryTasks);
var errors = libraryErrors.SelectMany(m => m);
Assert.True(!errors.Any(), String.Join(Environment.NewLine, errors));
}
private async Task<string> LoadEmbeddedLibraryAsync(IViewModel viewModel, string library)
{
return await Task.Factory.StartNew<string>(() =>
{
var libraryDef = viewModel.Library;
var libraryMessage = String.Format("The default library '{0}' of the type '{1}' ", library, libraryDef.LibraryName);
try
{
// Open the library
viewModel.Open(library, library: true);
// Check that the hash is as expected
var fileHash = libraryDef.GetDefaultFileHash(library);
var hash = viewModel.Source.GetStatewiseHashCode().ToString();
if (fileHash != hash)
return libraryMessage + String.Format("has been modified, model hash was '{0}' but '{1}' was expected.", hash, fileHash);
}
catch (Exception ex)
{
return String.Format("failed to open: {0}", ExceptionUtility.JoinExceptionMessages(ex));
}
return null;
});
}
Однако код выполняется синхронно, может кто-то пожалуйста, объясните что я делаю неправильно?
Thanks, Alex.