xUnit.net如何指定测试最长需要的超时时间

 残破的前进 发布于 2023-02-13 19:54
  • php
  • 我有使用xUnit.net设置的集成测试.

    有没有办法配置集成测试应该持续多长时间?我是指一个门槛.

    3 个回答
    • 不幸的是,在较新的版本中,Fact属性看起来不再具有 Timeout参数

      2023-02-13 19:56 回答
    • 看来,你要找的是属性的Timeout参数Fact.

      欲了解更多信息,请参阅的xUnit文档下确保了测试并不太长的.

      2023-02-13 19:56 回答
    • 对于较新的xunit版本,我使用的方法似乎运行良好:

      public static class AssertAsync
      {
          public static void CompletesIn(int timeout, Action action)
          {
              var task = Task.Run(action);
              var completedInTime = Task.WaitAll(new[] { task }, TimeSpan.FromSeconds(timeout));
      
              if (task.Exception != null)
              {
                  if (task.Exception.InnerExceptions.Count == 1)
                  {
                      throw task.Exception.InnerExceptions[0];
                  }
      
                  throw task.Exception;
              }
      
              if (!completedInTime)
              {
                  throw new TimeoutException($"Task did not complete in {timeout} seconds.");
              }
          }
      }
      

      您可以像这样使用它:

      [Fact]
      public void TestMethod()
      {
          AssertAsync.CompletesIn(2, () =>
          {
              RunTaskThatMightNotComplete();
          });
      }
      

      但是,请务必先阅读之所以将其删除的原因,因为该项目的维护者之一确实对可能导致测试运行死锁的问题提出了一个很好的观点.我在单线程模式下运行这些测试,但似乎不会导致问题.

      2023-02-13 19:56 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有