在这篇博文中,我将解释这些方法的主要区别是什么。首先我们为什么要使用这个方法。当我们测试我们的方法性能或者我们想知道我们的方法需要多长时间才能完成时,此方法将很有用。
首先我们必须给我们的测试方法时间,然后这些测试执行测试中的操作。如果此操作花费的时间比指定的时间长,则此测试将失败。
现在我们知道这些方法是什么,为什么我们在测试方法中使用它们。那我们就必须知道区别了。
让我简单解释一下。 assertTimeout 方法计算我们给出的时间,如果我们的测试方法花费的时间比指定的时间长,则在所有操作完成后,此测试将失败。但是,如果assertTimeoutPreemptively 方法花费的时间超过指定的时间,则该方法将立即失败。而且它不会等待所有流程完成,我们将在下一步的项目中对此进行测试。
首先打开你最喜欢的IDE。我打开 Intellij Idea 是因为这个 IDE 在 Java 开发人员中非常流行。当然你可以使用你喜欢的IDE,比如Eclipse,Netbeans,你喜欢哪一个。
现在创建一个新的 Maven 项目并将这 2 个依赖项添加到您的 pom.xml 文件中。
org.junit.jupiter junit-jupiter-api 5.3.1 test org.junit.jupiter junit-jupiter-engine 5.3.1 test
添加这些后打开 src/test/java 文件夹和
创建新类并指定您想要的名称,我将指定 TimeoutTest。
创建2个测试方法,其中一个测试assertTimeout,另一个测试assertTimeoutPreemptively。
之后,我给出持续时间并添加简单的打印消息。
我添加了 Thread.sleep() 方法,线程睡眠 8000 毫秒(8 秒)。但这两种方法都会失败,因为这些方法需要的时间超过 3 秒。让我测试一下这些方法以便更好地理解。
你看到 testAssertTimeout 方法需要 8s 3ms 因为这个方法等待完成所有操作,但另一个需要 3s 45ms,并且它不等待完成其他过程,它立即失败。
可以看到消息testAssertTimeout方法打印了消息,但是assertTimeoutPreemptively方法没有打印消息,它忽略了其他操作。
在这篇文章中我们讨论了assertTimeout和assertTimeoutPreemptively之间的主要区别。
终于,代码在Github上可用了。
照顾好自己,一会儿见。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3