2

大規模なアプリケーションになるもので、Akka と RabbitMQ を使用しています。

現在、受け入れテストと統合テストのために、テスト中のモジュールから通常はメッセージを送受信するアクターのモックを作成しています。事実上、まったく同じ RabbitMQ キューを使用し、データを注入または受信してから検証するだけです。

すべてがrabbitMQ全体で動作していることを保証するのに適切だと思いますか?

別の側面として、他のことをテストするためにロギング キューを使い始めました。あらゆる種類のログ メッセージをそこにルーティングし、キューを読んで何が起こっているかを把握するだけです。たとえば、何かが何かを行っているかどうかをテストしたい場合は、関数LogThis("Entered: Method Name")を貼り付けてから、メッセージを入れるキューを読み取って、それが発生したかどうかを確認します。

それは良い考えのように聞こえますか?単体テストでもそれをやっているという考えです。他のすべてはモックアウトされていますが、その方法を使用して、テストが難しい特定の領域の正しい動作を検証しています. ログデータのストリームを読み取って、それが私が望むことをしているかどうかを確認するだけです。

デバッグ レベルのログ ファイル キューをリッスンして同じ情報を取得できれば、Akka テスト キットであらゆる種類のトラブルに遭遇するよりもはるかに簡単に思えたので、このアイデアを思いつきました (ログが正確に記録されていることを保証する限り)。 )

4

1 に答える 1

0

rabbitMq の場合、私のアドバイスは本物の RabbiMQ を使用することです: これは、RabbitMq をプロビジョニングするためのシェフと Vagrant を使用し、Vagrant maven プラグインを使用して、統合テストの前に Box を開始し、統合テストの post フェーズで停止することで実行できます。

Vagrant Maven プラグイン: http://nicoulaj.github.io/vagrant-maven-plugin/

Vagrant Web サイト : http://www.vagrantup.com/

RabbitMQ のクックブック シェフ: https://github.com/opscode-cookbooks/rabbitmq

要約するには、次のことを行う必要があります。

  1. Vagrant をインストールし、空の Box (Centos または Ubunutu) を作成します。
  2. rabbitMQ cookbook を使用して VM をプロビジョニングします。
  3. .box をホーム フォルダー (rabbitMQ.box) に配置します。
  4. 統合テストの前段階で vagrant up (~/rabbitMQ.box) で VM を起動するように Maven Project を構成します。
  5. 統合テストの前段階で vagrant halt (~/rabbitMQ.box) で VM を停止するように Maven Project を構成します。

このようにして、テストが分離されます。

これが役立つことを願っています

于 2013-09-17T13:18:03.870 に答える