3

Spring Integration と RabbitMq を使用してアプリケーションを開発していますが、それをテストする方法 (統合テスト) を考えています。

SoapUI は優れたソリューションになると思いますが、RAbbitMq をサポートしていません。hermesjms.com は Qpid をサポートしているので、Rabbitmq をサポートする新しいプラグインを作成するのは簡単だと思いましたが、プロジェクトのために思ったよりも難しくなっています。少し古く、多くの依存関係があります。だから私はPythonのDSLのように、次のような何かを自分でやろうと考え始めています:

tests = [{ 'name': 'start',
    'routing_key': 'returned',
    'payload' : "xxxxx",
    'timeOut' : '10000',
    'expected': '',
    'threads': '1'
},
{ 'name': 'second',.....
]

そして、ピカでアクションを実行し、結果を確認します。

私はそれが非常にばかげていることを知っています.sopauiは巨大で素晴らしいですが、少なくとも小さなテストを行うことができます.

あなたは何をお勧めします?

4

3 に答える 3

1

RabbitMQは、Webfrontend(いわゆるManagement View 1)を提供します。

だから:あなたは正確に何をテストしたいですか?たとえば、 requestChannelの着信メッセージがサービスに戻って戻ってくることを確認したい場合は、チャネルを直接自動配線して(つまり、 @ Autowired private Channel requestChannel;)、メッセージをそこに入れることができます。

ただし、アーキテクチャを正しく設計する場合のみ:プロセスの各ステップは、モックまたは特別に変更された注入された依存関係を使用してテストできます。

独自のコンポーネントに加えて、これらのテスト容易性はスプリングコンポーネント(インターフェース)に適用されます。たとえば、独自のルーターを実装しているとします。テストと検証の入力と出力。変圧器も同様です。

「bicpicture」を検証しようとすると、完全なシナリオを再構築する必要があります。しかし、これは非永続的で非永続的なキューとメッセージでそれほど複雑であってはなりません。

他にテストしたいことはありますか?

于 2012-09-15T21:26:27.137 に答える
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:11:17.687 に答える
0

RabbitMQ に HTTP API が追加されたため、JMS の代わりにこれを使用できます。

http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v2_8_4/priv/www/api/index.html

于 2016-08-11T08:04:49.620 に答える