【问题标题】:xUnit doens't support async test?xUnit 不支持异步测试?
【发布时间】:2018-11-06 08:12:45
【问题描述】:

我读到 xUnit V2.4.1 支持异步测试(我将 nuget 包 xunit.runner.visualstudio 和 xunit.runner.console 添加到我的 Visual Studio 2015 项目中。)。所以我创建了以下测试。

[Fact]
public async Task SearchItemSqlRepositoryModel_Reset()
{
     await _searchItemSqlRepository.GetSearchItems(....);
}

但是,Run Test 显示“没有找到要运行的测试”?

我尝试将Task 更改为void,但仍然无法正常工作。

[Fact]
public async void SearchItemSqlRepositoryModel_Reset()

但是,同步版本可以工作。

[Fact]
public void SearchItemSqlRepositoryModel_Reset0()
{
    _searchItemSqlRepository.GetSearchItems(....).Wait();
}

【问题讨论】:

  • 标有[Fact]
  • 您使用的是哪个版本的 xUnit?
  • 这是否属于已包含 xUnit 测试的项目的一部分?你所拥有的应该足以让它发挥作用。您可能想尝试清理并重新构建或重新启动您的 IDE。
  • @RandomUs1r,V2.4.1
  • @Dave,是的,同步版本有效。我已经更新了问题。

标签: c# .net xunit


【解决方案1】:

如果您将“async Task”更改为“async void”,您的测试将运行。事实上,这种行为(有点)是设计使然。请参阅以下问题:

https://github.com/xunit/xunit/issues/1405

【讨论】:

  • 我试过了,右键没有运行。详情见我的回答。
【解决方案2】:

这听起来像是一个 xUnit runner 错误。

  • 在编辑器中右键单击,然后单击 Run Tests 将不会运行这些异步测试。
  • 但是,在测试资源管理器中单击Run All 将起作用。但它仍然不会在测试方法前面显示绿色复选图标。但它会在“测试资源管理器”中显示绿色复选图标。

【讨论】:

    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    相关资源
    最近更新 更多