当前位置: 首页 > 知识库问答 >
问题:

有办法期待超时吗?

邓鸿信
2023-03-14

目前,我正在编写一些集成测试,我需要断言对方法的调用至少阻塞了调用线程x秒。问题是,我有方法,将永远阻止,我需要断言,它已被阻止至少x秒。有什么办法可以做到吗?唯一的另一个答案是关于JUnit4,我们正在使用JUnit 5...提前感谢您的回答。

共有1个答案

亢正德
2023-03-14

您可以使用assertTimeout(持续时间超时,可执行可执行文件)来解决您的问题。有关更多信息,请访问JUnit 5用户指南。

    @Test
    void timeoutNotExceeded() {
        // The following assertion succeeds.
        assertTimeout(ofMinutes(2), () -> {
            // Perform task that takes less than 2 minutes.
        });
    }

    @Test
    void timeoutNotExceededWithResult() {
        // The following assertion succeeds, and returns the supplied object.
        String actualResult = assertTimeout(ofMinutes(2), () -> {
            return "a result";
        });
        assertEquals("a result", actualResult);
    }

    @Test
    void timeoutNotExceededWithMethod() {
        // The following assertion invokes a method reference and returns an object.
        String actualGreeting = assertTimeout(ofMinutes(2), AssertionsDemo::greeting);
        assertEquals("Hello, World!", actualGreeting);
    }

    @Test
    void timeoutExceeded() {
        // The following assertion fails with an error message similar to:
        // execution exceeded timeout of 10 ms by 91 ms
        assertTimeout(ofMillis(10), () -> {
            // Simulate task that takes more than 10 ms.
            Thread.sleep(100);
        });
    }

    @Test
    void timeoutExceededWithPreemptiveTermination() {
        // The following assertion fails with an error message similar to:
        // execution timed out after 10 ms
        assertTimeoutPreemptively(ofMillis(10), () -> {
            // Simulate task that takes more than 10 ms.
            new CountDownLatch(1).await();
        });
    }
 类似资料:
  • 问题内容: 我有一个自动运行git clone /pull的脚本(这实际上发生在jenkinsCI中,但我的问题更笼统)。远程git服务器基于HTTPS。带有git客户端的计算机具有不稳定的DSL Internet连接,因此有时会重新连接并更改IP地址,从而丢失所有现有连接。当git客户端运行时连接失败时,客户端将永远不会成功,但也不会因超时而失败,因此我的脚本会挂断。 我想设置客户端,使其在一段

  • 现在我想让所有的期货最多等待n秒,直到全部完成。我知道我可以调用,但是如果我在循环中对我的所有期货顺序地调用它,则超时开始增加。伪代码: 块会出现超时,直到结果就绪。因此,如果第一个在超时之前完成,第二个也在超时之前完成,依此类推,则整个执行时间最多为而不是。 因此,我正在寻找一个方法,它接受的列表和一个超时,并行运行所有的结果,然后返回一个未来结果的集合。有什么想法吗?

  • 在Bash脚本中,我想做如下操作: 一、 例如,在后台启动两个应用程序,并给他们60秒时间完成工作。然后,如果他们没有在这段时间内完成,就杀了他们。 不幸的是,上面的方法行不通,因为< code>timeout是一个可执行文件,而< code>wait是一个shell命令。我试着把它改成: 但是这仍然不起作用,因为< code>wait只能在同一个shell中启动的PID上调用。 有什么想法吗?

  • 问题内容: 在Bash脚本中,我想执行以下操作: 即,在后台启动两个应用程序,并给它们60秒以完成其工作。然后,如果他们没有在该时间间隔内完成,请杀死他们。 不幸的是,上述内容不起作用,因为它是可执行文件,而它是Shell命令。我尝试将其更改为: 但这仍然行不通,因为只能在同一外壳程序内启动的PID上进行调用。 有任何想法吗? 问题答案: 将PID写入文件并像这样启动应用程序: 这将创建另一个hi

  • 问题内容: 我使用Node.js和TypeScript,并且使用。这是我的测试用例: 我想为整个功能设置一个超时时间。即如果要花费2秒,花费0.5秒,花费5秒,我想在3秒钟后让我抛出错误的超时。 正常调用是一个问题,因为范围丢失了: 而且我不能用普通的方式抓住它: 有关如何解决的任何想法? 问题答案: 您可以使用超时: 您必须将其包装在诺言中才能使用。

  • 问题内容: 我想知道WebDriver等待超时和隐式等待超时之间的技术差异。 问题答案: 如文档中所述: 在内部设置将用于所有连续搜索的超时。如果找不到该元素,它将尝试在指定的时间内反复查找该元素。它仅执行此操作,不能强制执行其他任何操作- 它等待元素显示。 ,或者只是您用于特定搜索的一次计时器。它具有更大的可扩展性,意味着您可以将其设置为等待可能需要的任何条件。通常,您可以使用一些预构建的元素来