ホームページ  >  記事  >  Java  >  assertTimeoutとassertTimeoutPreemptivelyの主な違いは何ですか?

assertTimeoutとassertTimeoutPreemptivelyの主な違いは何ですか?

WBOY
WBOYオリジナル
2024-07-16 11:42:42717ブラウズ

このブログ投稿では、これらのメソッドの主な違いについて説明します。まず第一に、なぜこの方法を使用するのかということです。このメソッドは、メソッドのパフォーマンスをテストする場合、またはメソッドが完了するまでにどれくらいの時間がかかるかを知りたい場合に役立ちます。

これらの方法はどのように機能するのでしょうか?

まず、テストメソッドに時間を与える必要があります。その後、これらのテストはテスト内の操作を実行します。この操作に指定された時間よりも長い時間がかかる場合、このテストは失敗します。

assertTimeoutとassertTimeoutPreemptivelyの違い

これで、これらのメソッドが何であるか、テストメソッドでそれらを使用する理由がわかりました。それなら、その違いを知る必要があります。

簡単に説明しましょう。 assertTimeout メソッドは指定した時間をカウントします。テスト メソッドに指定された時間よりも時間がかかる場合、すべての操作が完了した後でこのテストは失敗します。ただし、assertTimeoutPreemptively メソッドに指定された時間よりも時間がかかる場合、このメソッドはすぐに失敗します。すべてのプロセスが完了するのを待つことはありません。次のステップのプロジェクトでこれをテストします。

テスト

まず、お気に入りの IDE を開きます。 Intellij Idea は Java 開発者の間で非常に人気があるため、Intellij Idea を開きます。もちろん、Eclipse、Netbeans など、お好みの IDE を使用することもできます。

次に、新しい 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 つのテスト メソッドを作成し、1 つはassertTimeout をテストし、もう 1 つはassertTimeoutPreemptiveにテストします。

assertTimeout and assertTimeoutPreemptively

その後、期間を指定し、簡単な印刷メッセージを追加します。

Informational messages

Thread.sleep() メソッドを追加すると、スレッドは 8000 ミリ秒 (8 秒) スリープします。ただし、これら 2 つの方法は 3 秒以上かかるため、失敗します。理解を深めるために、これらのメソッドをテストしてみましょう。

result of methods

そして、testAssertTimeout メソッドは 8 秒 3 ミリ秒 かかることがわかります。このメソッドはすべての操作が完了するまで待機するためです。しかし、もう 1 つのメソッドは 3 秒 45 ミリ秒 かかり、他のプロセスの完了を待機しません。 、すぐに失敗します。

testAssertTimeout メソッドはメッセージを出力しますが、assertTimeoutPreemptively メソッドはメッセージを出力せず、他の操作を無視しているというメッセージが表示されます。

結論

この投稿では、assertTimeout とassertTimeoutPreemptively の主な違いについて説明しました。

ついに、コードが Github で利用可能になりました。

お体に気をつけて、またお会いしましょう。

以上がassertTimeoutとassertTimeoutPreemptivelyの主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。