1.8. 継続的テストの有効化と実行
Red Hat build of Quarkus を使用すると、アプリケーションの開発中にコードの変更を継続的にテストできます。Quarkus には、コードに変更を加えて保存した直後に実行できる継続的テスト機能があります。
継続的テストを実行すると、アプリケーションの起動後にテストが一時停止されます。アプリケーションの起動後、すぐにテストを再開できます。Quarkus アプリケーションは、実行するテストを決定します。これにより、変更されたコードに対してのみテストが実行されます。
Quarkus の継続的テスト機能は、デフォルトで有効になっています。src/main/resources/application.properties
ファイルの quarkus.test.continuous-testing
プロパティーを disabled
に設定することで、継続的テストを無効にできます。
以前に継続的テストを無効にしており、再度有効にしたい場合は、テストを開始する前に Quarkus アプリケーションを再起動する必要があります。
前提条件
- Quarkus Getting Started アプリケーション (またはその他のアプリケーション) をコンパイルしちえる。詳細は、Quarkus Getting Started プロジェクトのコンパイルおよび起動 を 参照してください。
手順
Quarkus アプリケーションを起動します。
code.quarkus.redhat.com または Quarkus CLI を使用して Getting Project プロジェクトを作成した場合、プロジェクトの生成時に Maven ラッパーが提供されています。プロジェクトディレクトリーから次のコマンドを入力します。
./mvnw quarkus:dev
マシンにインストールされている Apache Maven を使用して Getting Project プロジェクトを作成した場合、次のコマンドを入力します。
mvn quarkus:dev
開発モードで継続的なテストを実行し、Quarkus CLI を使用している場合は、以下のコマンドを入力します。
quarkus dev
生成された出力ログで、テストステータスの詳細を表示します。
注記出力ログを表示するには、画面の一番下までスクロールする必要がある場合があります。
継続的テストが有効になっている場合、次のメッセージが表示されます。
Tests paused, press [r] to resume, [h] for more options>
注記デフォルトでは、継続的テストが有効になっている場合、アプリケーションの起動後にテストが一時停止されます。テストの実行方法を制御するために使用できるキーボードコマンドについては、継続的なテストを制御するコマンド を参照してください。
- テストの実行を開始するには、キーボードの `r` を押します。
更新された出力ログを表示して、テストステータスとテスト結果の監視、およびテストの統計情報の確認を行い、フォローアップアクションのガイダンスを取得します。以下に例を示します。
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>
検証
-
コードを変更します。たとえば、テキストエディターで
src/main/java/GreetingsResource.java
ファイルを開きます。 "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"; } }
- Quarkus がすぐにテストを再実行して、変更後のコードをテストすることを確認します。
出力ログを表示してテスト結果を確認します。この例では、テストでは変更された文字列に値 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>
-
継続的テストを終了するには、キーボードの
Ctrl-C
または 'q' を押します。
値を "hello" に戻すと、テストが自動的に再度実行されます。
1.8.1. 継続的テストの制御コマンド
キーボードのホットキーコマンドを使用して、継続的テストのオプションを制御できます。コマンドの完全なリストを表示するには、キーボードの 'h' を押します。以下のオプションを設定できます。
コマンド | 説明 |
---|---|
r | すべてのテストを再実行します。 |
f | 失敗したすべてのテストを再実行します。 |
b | 'broken only' モードに切り替えます。他のテストもコード変更の影響を受ける場合でも、以前に失敗したテストのみが実行されます。このオプションは、多くのテストで使用されるコードを変更するが、失敗したテストのみを確認したい場合に便利です。 |
v | 最後のテスト実行からのテスト失敗の詳細をコンソールに出力します。このオプションは、最後のテスト実行以降に大量のコンソール出力があった場合に便利です。 |
p | 実行中のテストを一時的に停止します。これは、多くのコード変更を行っているが、変更が完了するまでテストのフィードバックを取得したくない場合に便利です。 |
q | 継続的テストを終了します。 |
o | テスト出力をコンソールに出力します。これはデフォルトで無効にされます。テスト出力が無効になっている場合、出力はフィルタリングされて保存されますが、コンソールには表示されません。テスト出力は開発 UI で表示できます。 |
i | インストルメンテーションベースのリロードを切り替えます。このオプションを使用してもテストに直接的な影響はありませんが、ライブリロードが可能になります。これは、変更がクラスの構造に影響を与えない場合に再起動を回避するために役立ちます。 |
l | ライブリロードを切り替えます。このオプションを使用してもテストに直接的な影響はありませんが、ライブリロードのオンまたはオフへの切り替えが可能になります。 |
s | 強制的に再起動します。このオプションを使用すると、変更されたファイルのスキャンと変更を含むライブリロードを強制できます。コードに変更がなく、ライブリロードが無効になっている場合でも、アプリケーションが再起動されることに注意してください。 |