「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > assertTimeoutとassertTimeoutPreemptivelyの主な違いは何ですか?

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

2024 年 7 月 30 日に公開
ブラウズ:903

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

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

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

assertTimeoutとassertTimeoutPreemptivelyの違い

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

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

テスト

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

次に、新しい 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 つのテスト メソッドを作成します。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 で入手可能になりました。

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

リリースステートメント この記事は次の場所に転載されています: https://dev.to/mammadyahyayev/what-is-the-main-difference-between-asserttimeout-and-asserttimeoutpreemptively-8l?1 権利侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3