検索

1.8. 継続的テストの有効化と実行

download PDF

Red Hat build of Quarkus を使用すると、アプリケーションの開発中にコードの変更を継続的にテストできます。Quarkus には、コードに変更を加えて保存した直後に実行できる継続的テスト機能があります。

継続的テストを実行すると、アプリケーションの起動後にテストが一時停止されます。アプリケーションの起動後、すぐにテストを再開できます。Quarkus アプリケーションは、実行するテストを決定します。これにより、変更されたコードに対してのみテストが実行されます。

Quarkus の継続的テスト機能は、デフォルトで有効になっています。src/main/resources/application.properties ファイルの quarkus.test.continuous-testing プロパティーを disabled に設定することで、継続的テストを無効にできます。

注記

以前に継続的テストを無効にしており、再度有効にしたい場合は、テストを開始する前に Quarkus アプリケーションを再起動する必要があります。

前提条件

手順

  1. Quarkus アプリケーションを起動します。

    • code.quarkus.redhat.com または Quarkus CLI を使用して Getting Project プロジェクトを作成した場合、プロジェクトの生成時に Maven ラッパーが提供されています。プロジェクトディレクトリーから次のコマンドを入力します。

      ./mvnw quarkus:dev
    • マシンにインストールされている Apache Maven を使用して Getting Project プロジェクトを作成した場合、次のコマンドを入力します。

      mvn quarkus:dev
    • 開発モードで継続的なテストを実行し、Quarkus CLI を使用している場合は、以下のコマンドを入力します。

      quarkus dev
  2. 生成された出力ログで、テストステータスの詳細を表示します。

    注記

    出力ログを表示するには、画面の一番下までスクロールする必要がある場合があります。

    継続的テストが有効になっている場合、次のメッセージが表示されます。

    Tests paused, press [r] to resume, [h] for more options>
    注記

    デフォルトでは、継続的テストが有効になっている場合、アプリケーションの起動後にテストが一時停止されます。テストの実行方法を制御するために使用できるキーボードコマンドについては、継続的なテストを制御するコマンド を参照してください。

  3. テストの実行を開始するには、キーボードの `r` を押します。
  4. 更新された出力ログを表示して、テストステータスとテスト結果の監視、およびテストの統計情報の確認を行い、フォローアップアクションのガイダンスを取得します。以下に例を示します。

    Tests all passed, 2 tests were run, 0 were skipped. Tests took 1470ms.
    Press [r] to re-run, [v] to view full results, [p] to pause, [h] for more options>

検証

  1. コードを変更します。たとえば、テキストエディターで src/main/java/GreetingsResource.java ファイルを開きます。
  2. "Hello world" を返すように "hello" エンドポイントを変更し、ファイルを保存します。

    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    
    @Path("/hello")
    public class GreetingResource {
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return "Hello world";
        }
    }
  3. Quarkus がすぐにテストを再実行して、変更後のコードをテストすることを確認します。
  4. 出力ログを表示してテスト結果を確認します。この例では、テストでは変更された文字列に値 hello が含まれているかどうかを確認します。文字列が "Hello world" に変更されているため、テストは失敗します。

    2021-05-11 14:21:34,338 ERROR [io.qua.test] (Test runner thread) Test GreetingResourceTest#testHelloEndpoint() failed
    : java.lang.AssertionError: 1 expectation failed.
    Response body doesn't match expectation.
    Expected: is "hello"
      Actual: Hello world
    	at io.restassured.internal.ValidatableResponseImpl.body(ValidatableResponseImpl.groovy)
    	at org.acme.getting.started.GreetingResourceTest.testHelloEndpoint(GreetingResourceTest.java:21)
    --
    Test run failed, 2 tests were run, 1 failed, 0 were skipped. Tests took 295ms
    Press [r] to re-run, [v] to view full results, [p] to pause, [h] for more options>
  5. 継続的テストを終了するには、キーボードの Ctrl-C または 'q' を押します。
注記

値を "hello" に戻すと、テストが自動的に再度実行されます。

1.8.1. 継続的テストの制御コマンド

キーボードのホットキーコマンドを使用して、継続的テストのオプションを制御できます。コマンドの完全なリストを表示するには、キーボードの 'h' を押します。以下のオプションを設定できます。

コマンド説明

r

すべてのテストを再実行します。

f

失敗したすべてのテストを再実行します。

b

'broken only' モードに切り替えます。他のテストもコード変更の影響を受ける場合でも、以前に失敗したテストのみが実行されます。このオプションは、多くのテストで使用されるコードを変更するが、失敗したテストのみを確認したい場合に便利です。

v

最後のテスト実行からのテスト失敗の詳細をコンソールに出力します。このオプションは、最後のテスト実行以降に大量のコンソール出力があった場合に便利です。

p

実行中のテストを一時的に停止します。これは、多くのコード変更を行っているが、変更が完了するまでテストのフィードバックを取得したくない場合に便利です。

q

継続的テストを終了します。

o

テスト出力をコンソールに出力します。これはデフォルトで無効にされます。テスト出力が無効になっている場合、出力はフィルタリングされて保存されますが、コンソールには表示されません。テスト出力は開発 UI で表示できます。

i

インストルメンテーションベースのリロードを切り替えます。このオプションを使用してもテストに直接的な影響はありませんが、ライブリロードが可能になります。これは、変更がクラスの構造に影響を与えない場合に再起動を回避するために役立ちます。

l

ライブリロードを切り替えます。このオプションを使用してもテストに直接的な影響はありませんが、ライブリロードのオンまたはオフへの切り替えが可能になります。

s

強制的に再起動します。このオプションを使用すると、変更されたファイルのスキャンと変更を含むライブリロードを強制できます。コードに変更がなく、ライブリロードが無効になっている場合でも、アプリケーションが再起動されることに注意してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.