首页 >Java >java教程 >assertTimeout 和assertTimeoutPreemptively 之间的主要区别是什么?

assertTimeout 和assertTimeoutPreemptively 之间的主要区别是什么?

WBOY
WBOY原创
2024-07-16 11:42:42774浏览

在这篇博文中,我将解释这些方法的主要区别是什么。首先我们为什么要使用这个方法。当我们测试我们的方法性能或者我们想知道我们的方法需要多长时间才能完成时,此方法将很有用。

这些方法如何运作?

首先我们必须给我们的测试方法时间,然后这些测试执行测试中的操作。如果此操作花费的时间比指定的时间长,则此测试将失败。

assertTimeout 和assertTimeoutPreemptively 之间的区别

现在我们知道这些方法是什么,为什么我们在测试方法中使用它们。那么我们一定要知道其中的区别。

让我简单解释一下。 assertTimeout 方法计算我们给出的时间,如果我们的测试方法花费的时间比指定的时间长,则在所有操作完成后,此测试将失败。但是,如果assertTimeoutPreemptively 方法花费的时间超过指定的时间,则该方法将立即失败。而且它不会等待所有流程完成,我们将在下一步的项目中对此进行测试。

测试

首先打开你最喜欢的IDE。我打开 Intellij Idea 是因为这个 IDE 在 Java 开发人员中非常流行。当然你可以使用你喜欢的IDE,比如Eclipse,Netbeans,你喜欢哪一个。

现在创建一个新的 Maven 项目并将这 2 个依赖项添加到您的 pom.xml 文件中。

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.3.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.3.1</version>
    <scope>test</scope>
</dependency>

添加这些后,打开 src/test/java 文件夹并

创建新类并给你想要的名称,我会给 TimeoutTest。

创建2个测试方法,其中一个测试assertTimeout,另一个测试assertTimeoutPreemptively。

assertTimeout and assertTimeoutPreemptively

之后,我给出持续时间并添加简单的打印消息。

Informational messages

我添加了 Thread.sleep() 方法,线程睡眠 8000 毫秒(8 秒)。但这两种方法都会失败,因为这些方法需要的时间超过 3 秒。让我测试一下这些方法以便更好地理解。

result of methods

你会看到 testAssertTimeout 方法需要 8s 3ms 因为这个方法等待完成所有操作,但另一个需要 3s 45ms,并且它不会等待完成其他过程,它立即失败。

可以看到消息testAssertTimeout方法打印了消息,但是assertTimeoutPreemptively方法没有打印消息,它忽略了其他操作。

结论

在这篇文章中我们讨论了assertTimeout 和assertTimeoutPreemptively 之间的主要区别。

终于可以在Github上获取代码了。

照顾好自己,很快再见。

以上是assertTimeout 和assertTimeoutPreemptively 之间的主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn