1

いくつかの SOAP リクエストがあり、リクエストを実行してレスポンスを検証する Fitnesse ページが必要です (200 OK を確認するか、返された SOAP レスポンスを確認します)。簡単に言えば、一連の SOAP リクエストを再生し、デプロイ後のスモーク テストのように、それらが機能したことを検証するために使用しています。

これは組み込みの何かで、http リクエストを送信し、応答コードをチェックするか、本体の一括比較を行う必要があるようです。XML 応答自体を掘り下げる必要はありません。これは実際にスクリプト (bash/curl) で作成できるものですが、他の多くのものに使用しているため、Fitnesse を使用したいと思います。

C# (FitSharp) バージョンではなく、Java バージョンの Fitnesse を使用しています。

私は成功せずに探し回りましたが、Fitnesse自体またはこれをサポートするために立ち寄ることができる一般的なサードパーティのjarファイルのいずれかでそれを見逃したことを願っています.

4

3 に答える 3

3

RestFixture をお勧めします。その名前にもかかわらず、非常にシンプルな HTTP クライアントです。任意の HTTP リクエストを作成して、返された応答を確認できます: ステータス コード、ヘッダー (正規表現を使用して、関心のあるヘッダーのみを確認します) および本文 ( XPath または JavaScript の期待値を使用して、関心のあるノードのみをチェックします)。Content-Type ヘッダーの値に基づいて XML または JSON を処理します。ほとんどすべての HTTP 動詞を処理します: GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE。ただし、PATCHを処理するとは思わないでください。

Fried Hoeben の HttpTest フィクスチャ、XmlHttpTest および JsonHttpTest を使い始めたところです (このスレッドの別の場所にある Fried の回答を参照してください)。RestFixture よりもわずかに多くの機能を備えているようです。たとえば、本文に埋め込まれた特定の値を除いて同一のリクエストを繰り返し送信できるテンプレートをサポートしています。テンプレートを 1 回指定してから、呼び出しごとにテンプレートに渡す値をリストするだけで、毎回リクエスト本文全体を繰り返し指定する必要がなくなります。

一方、Web サービスへの単純な呼び出しについては、RestFixture の方が使いやすいと思います。

RestFixture の概要

RestFixture は実質的に 3 種類のコマンドしかないため覚えやすいです。

1) セット: setHeader および setBody。HTTP 要求のヘッダーまたは本文を指定するため。

2) let: 変数に値を割り当てるため。

3) HTTP 動詞: HTTP 要求を送信します。

これが、私が RestFixture を気に入っている理由です。すべての HTTP 動詞の構文は同じです。

| verb | uri | ?responseStatusCode | ?responseHeaders | ?responseBody |

HTTP 動詞、リクエストの送信先の URI、予想されるレスポンス ステータス コード、チェックするレスポンス ヘッダー (テストしたくないヘッダーは除外します。正規表現を使用できます)、およびノー​​ドを指定します。応答本文で確認します。

すべての HTTP 動詞に同じ構文を使用すると、非常にクリーンなテストになると思います。

| Import |
| smartrics.rest.fitnesse.fixture |

|Table: Rest Fixture | http://localhost:9876 |
| setBody | <resource><name>a name</name><data>data</data></resource> |
| POST | /resources/ | 201    |                          | no-body    |
| let  | id          | header | Location:/resources/(.+) |            |

| Table: Rest Fixture | http://localhost:9876 |
| GET | /resources/%id% | 200 | Content-Type : application/xml | !- /resource/name[text()='a name']
                                                                    /resource/data[text()='data'] -! |

このテストは、POST を介して新しいアイテムを生成し、新しいアイテムの ID を読み取って変数に割り当て、その ID 値を GET で使用して、新しいアイテムが存在し、正しいデータが含まれていることを確認します。

POST 要求は、応答に 201 ステータス コードがあり、本文がないことを想定しています。GET 要求は、応答にステータス コード 200 と、Content-Type ヘッダーが application/xml に設定されていることを期待しています。ボディには、「名前」に設定された名前ノードと「データ」に設定されたデータ ノードがあることが期待されます。

この例は RESTful Web サービス用ですが、RestFixture は SOAP でも同様に機能します。POST に指定する本文は、大きくなります。

インストールと使用

RestFixture はhttp://github.com/smartrics/RestFixtureにあります。豊富な例を含むドキュメントへのリンクが含まれています。

Maven を使用して RestFixture をビルドおよびインストールする手順は次のとおりです。 RestFixture を使用してテストを作成するワークフロー

Maven の経験がなくても .NET のバックグラウンドを持っていたので、インストールする最も簡単な方法は、既存の FitNesse インストールに追加することであることがわかりました。

1) Maven Central ( http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22smartrics-RestFixture%22 ) から圧縮されたバイナリをダウンロードします。

2) zip ファイルを FitrNesseRoot ディレクトリの横のディレクトリに解凍します (ディレクトリは FitNesseRoot の下にあってはなりません)。例として、ディレクトリをRestFixtureLibと呼びましょう(実際には、ディレクトリには好きな名前を付けることができます)。

3)すでに FitNesse がインストールされているため、 RestFixtureLibディレクトリで FitNesse-{version}.jar ファイルを削除します。

4) RestFixture テストを含むテスト ページで、RestFixtureLib ディレクトリをクラス パスに追加します。

!path RestFixtureLib/*.jar

(または、RestFixture を解凍したディレクトリへのパスは何でも)

複数のページで RestFixture を使用する場合は、このクラス パス定義をスイート ページまたはルート ページに含めることができます。

5) RestFixture は、FIT または SLIM テスト システムで使用できます。SLIM を使用している場合は、テスト ページに次の定義を含めます。

!define TEST_SYSTEM {slim}

6) テスト ページの上部にある RestFixture 名前空間をインポートすると、テストの手間が大幅に軽減されます。

| Import |
| smartrics.rest.fitnesse.fixture |

次に、次のようにテストを定義できます

|Table: Rest Fixture | ... |
| ...                      |
于 2016-10-31T09:15:15.523 に答える
0

FitNesse 自体は、何をテストしたいかについては非常に不可知です。そのため、すぐに使用できる SOAP ライブラリは付属していません。javax.xml.soap クラスをラップすることで独自のものを実装しました。残念ながら、そのコードを共有することはできません。それほど複雑ではないと言えます。

これらのクラスを使用した単純な SOAP 呼び出しの基本については、http ://www.java2s.com/Code/Java/J2EE/ThisexampledemonstratesahelloworldexampleforusingJAXMAPI.htm を参照してください。

于 2012-10-16T00:42:05.590 に答える