Hatの佐藤匡剛です。APIコンポーネントフレームワーク紹介記事の第4回目(最終回)です。前回は、フレームワークの中核であるAPIのマッピング設定を詳しく見ました。今回はプロジェクトを完成させるためのインテグレーションテストについて説明します。コンポーネントのインテグレーションテストCamelコンポーネントは外部サービスとの連携を提供するコードですので、それをきちんとテストするとなると必然的にインテグレーションテストになります。したがって、インテグレーションテストを追加するまではプロジェクトが完成したとは言えません。APIコンポーネントフレームワークは、インテグレーションテストまで自動で用意してくれています。第2回のところでビルド後に生成されるソースコードについて眺めましたが、そこでチラッと出てきたテストコードの出番です。プロジェクトにインテグレーションテストを追加するもう一度camel-hello-component/target/generated-test-sources/camel-component/を見てみます。HelloJavadocHelloIntegrationTest.java見て分かるように、APIクラス毎にインテグレーションテストが作成されています。camel-helloコンポーネントの例では、hello-fileとhello-javadocに対してそれぞれxxxxxIntegrationTest.javaが生成されています。試しにHelloFileHelloIntegrationTest.javaを開いて見ましょう。コメントに指示が書いてあります。[...]このテストクラスをsrc/test/javaに移して、パラメータの値をセットし、@Ignoreを外せ、という指示です。ソースがsrc/test/javaに移されると、次のビルドからは同じクラスは自動生成されないとも書いてあります。指示通りに、2つのテストクラスをcamel-hello-component/src/test/javaに移します。インテグレーションテストを完成させるsrc/test/javaにテストを移したら、改めてテストクラスの中身を見てみます。}}AbstractHelloTestSupportは元々src/test/javaに生成されているインテグレーションテストの抽象ベースクラスです。すべてのテストクラスに共通の初期化処理やヘルパーメソッドを提供したい場合は、このベースクラスを使います。冒頭コメントの指示通り、@Ignoreを外してテストパラメータを適宜セットしましょう。testがパスするようになるはずです。標準APIコンポーネントの使い方を知るには少し脱線しますが、Camel標準のAPIコンポーネントの使い方を知りたいときにも、この自動生成されたテストケースが役に立ちます。Camelのコンポーネントはドキュメントがよく整備されていますが、それでも実際に使おうとすると、どのエンドポイントにどのオプションが必要かといった情報が足りないことがあります。その場合、APIコンポーネントフレームワークを使ったコンポーネントであれば、このフレームワークから自動生成されたテストを見ることで、エンドポイント毎にどのオプションが最低限必要なのかが一目で分かります。camel-boxのbox://files/downloadFileエンドポイントのテストは以下の通りです。}fileIdとoutputが最低限必要なのが分かるでしょうか。テストケースに認証情報を渡す後はAPIライブラリを本物のWebサービスのものに差し替え、ちゃんとしたテストケースをどんどん追加していくだけなのですが、そのために必要な最後のポイントはサービスの認証情報をどうやってテストケースに渡すか、です。インテグレーションテストのベースクラスAbstractHelloTestSupportを改めて見てみます。}テストのブート時に呼ばれるcreateCamelContext()メソッドを見ると、test-options.propertiesファイルからプロパティを読み込み、それをプロジェクトのxxxxxConfigurationクラスに適用しているのが分かります。test-options.propertiesファイルは、camel-hello-component/src/test/resources/test-options.propertiesに見つかります。実際のWebサービスとのインテグレーションテストに必要な認証情報などは、このtest-options.propertiesファイルにセットすればいいのです。(認証情報なので、ソースコードリポジトリにはコミットしないように注意しましょう。)例えば、camel-google-driveのtest-options.propertiesは以下の通りです。secretclientId=clientSecret=applicationName=camel-google-drive/1.0#accessToken=refreshToken=camel-google-driveコンポーネントをテストしたい開発者は、この空のプロパティに適切に自分のテスト用の認証情報をセットしてインテグレーションテストを実行します。おわりに以上、全4回でAPIコンポーネントフレームワークの使い方を一通り説明しました。実際にCamelコンポーネントを開発しようとすると、まだまだ知っておくべき知識が色々と出てくると思いますが、それはコンポーネント開発一般に必要な知識なので、また別の機会に解説したいと思います。分からないことがあったらまずはCamelの標準コンポーネントのソースコードを眺めてみる、というのが次のステップです(Camelに限らずOSS一般に言えることですが)。今回作成したcamel-helloコンポーネントのソースコードは、以下のGitHubリポジトリに上がっています。Hatの福岡オフィスでソリューションアーキテクトをしている...2019-05-13swagger-uiでAPIドキュメント公開方法レッドハットでコンサルティングしているフェンです。Hatの佐藤匡剛です。Hatの佐藤匡剛です。各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。