[英]Unit Testing Async Methods
I'm having some problems unit testing async methods. 我在单元测试异步方法时遇到了一些问题。
Here's my unit test code: 这是我的单元测试代码:
[TestMethod]
public async Task TestRefreshList_RefreshesList()
{
int countBeforeAdd = listViewModel.NotesTitles.Count;
// Add a note.
await listViewModel.NoteRepository.AddNoteAsync(new Note { Title = String.Empty, Content = String.Empty });
// Refresh.
await listViewModel.RefreshList();
int countAfterAdd = listViewModel.NotesTitles.Count;
// Assert that the count increased by 1 and that it matches the count of the repository.
Assert.IsTrue(countAfterAdd == countBeforeAdd + 1 && countAfterAdd == mockNoteRepository.FakeNotes.Count);
}
When I run this test, it appears to never get past the first await statement. 当我运行此测试时,似乎永远不会超过第一个await语句。 If it helps, here are the methods under test:
如果有帮助,以下是测试中的方法:
public ObservableCollection<Note> FakeNotes { get; set; }
public Task AddNoteAsync(Models.Note note)
{
return new Task(() =>
{
FakeNotes.Add(note);
});
}
public Task<ObservableCollection<string>> GetAllNoteTitlesAsync()
{
// Return the titles of the notes in the FakeNotes collection.
return new Task<ObservableCollection<string>>(() =>
{
return new ObservableCollection<string>(FakeNotes.Select(n => n.Title));
});
}
.... ....
public async Task RefreshList()
{
try
{
NotesTitles = await NoteRepository.GetAllNoteTitlesAsync();
}
catch (Exception)
{
Notifier.Notify("We encountered an error when trying to load your notes. Please try again. ", "Ooops!");
}
}
Any help would be appreciated. 任何帮助,将不胜感激。 Thanks.
谢谢。
Your Task
s are never started. 你的
Task
永远不会开始。 Try using Task.Run
instead of the Task
constructor. 尝试使用
Task.Run
而不是Task
构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.