【问题标题】:unit testing async task in csharpcsharp中的单元测试异步任务
【发布时间】:2017-02-04 00:11:55
【问题描述】:

我是 Visual Studio/C# 中单元测试和异步操作的新手。感谢您对此的任何帮助。

我的主课

class Foo 
{
    public async Task<string> GetWebAsync()
    {
        using (var client = new HttpClient())
        {
            var response = await client.GetAsync("https://hotmail.com");
            return await response.Content.ReadAsStringAsync();
        }
    }
}

单元测试

[TestMethod]
public void TestGet()
{
    Foo foo = new Foo();

    foo.GetWebAsync().ContinueWith((k) =>
    {
        Console.Write(k);
        Assert.IsNotNull(null, "error");
    });
}

【问题讨论】:

  • 这段代码在我看来很奇怪var response = await client.GetAsync("https://hotmail.com"); return await response.Content.ReadAsStringAsync();.....为什么不是两个响应,然后等一下?
  • @Hackerman 我是新人,代码不完美,你能帮忙解决一下吗?
  • 您可以在codereview.stackexchange.com上创建另一个类似的问题

标签: c# .net unit-testing async-await


【解决方案1】:

使测试也异步

[TestMethod]
public async Task TestGet() {
    var foo = new Foo();
    var result = await foo.GetWebAsync();
    Assert.IsNotNull(result, "error");
    Console.Write(result);
}

【讨论】:

  • 谢谢它有效,快速提问,有时我的Console.Write("..") 输出会出现在 TestExplorer 中,除了堆栈跟踪(如果错误),一旦我选择了特定的测试,有时没有,知道吗?
  • 你认为我对GetWebAsync 的实现正确吗?
  • @user2727195 一开始没问题。总是有改进的余地,但这会导致 OOP 设计的另一个主题,这超出了这个问题的范围
  • 我们什么时候必须打电话给ConfigureAwait(false)
猜你喜欢
  • 2019-08-02
  • 2016-02-11
  • 2012-12-09
  • 2012-12-26
  • 2017-12-16
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
  • 2011-05-21
相关资源
最近更新 更多