【发布时间】:2014-09-09 03:23:15
【问题描述】:
在 await 执行 async 方法后,我很惊讶我的断点在引用等待的 Task<T> 的行上从未被命中:
[Test]
public async void GetSomethingTest()
{
var service = SimpleIoc.Default.GetInstance<IService>();
var result = await service.TryGetSomethingAsync(20);
Assert.IsTrue(result.IsSuccess);
Assert.IsNotNull(result.ReturnValue);
}
在第一个Assert 行放置断点不会被命中,但测试通过。
await 返回时如何中断?
更新:我猜这是因为测试框架不是 awaiting 调用测试方法,我使用的是 NUnit 2.6.3 并声称支持 async,但是是否这需要在await 之后中断,就像我正在尝试做的那样,我不确定......
【问题讨论】:
-
将测试方法从 async void 更改为 async Task
-
@Neel 没有帮助:(
-
我在调试单元测试时遇到了各种各样的问题。如果它不能按照您想要的方式工作,请将您的测试复制到 ConsoleApplication 并在那里调试它们。这样麻烦少了很多。
-
我每天都对 Visual Studio 和/或 NUnit 感到越来越沮丧。我无法在基于异步的测试中正确设置断点。我在这里遵循了所有建议的答案,但没有任何效果。目前在 NUnit 3.13.1 上可能会回到 Java、NodeJS 和 Python。我从来没有遇到过这些意想不到的、无法接受的愚蠢问题。
标签: c# nunit async-await .net-4.5 c#-5.0