5

外部 Web サービスにメッセージを送信するアプリケーションがあります。MSBuildCruisecontrol.NETを使用して、このアプリケーションをビルドおよびデプロイします。CCNET がアプリをビルドしてデプロイする際、NUnitを使用して一連のテストも実行します。ここで、Web サービス通信もテストしたいと思います。

私の考えでは、ビルド プロセスの一環として、(外部 Web サービスの WSDL に基づいて) Web サービスを生成し、ビルド サーバーのローカル Web サーバーにデプロイする必要があります。Web サービスが行う必要があるのは、メッセージを受信して​​ファイル システムに配置することだけです。これにより、たとえば通常の NUnit を使用して確認できます。これにより、新しい開発者はビルド スクリプトを実行して実行するだけでよいため、開発が容易になります (サード パーティ サービスへの接続を設定するために時間を費やす必要はありません)。

WSDL に基づいて Web サービスを簡単に模倣できる既存のユーティリティはありますか? MSBuildを使用して似たようなことをした人はいますか?

このシナリオをテストする他の方法はありますか?

4

5 に答える 5

3

http://www.soapui.org/を調べ始めたところですが、Web サービスのテストにはうまく機能するようです。

また、Web サービスに抽象化レイヤーを追加することを検討してください。各サービス呼び出しは、(Web スコープの外側で) テスト可能なメソッドを直接呼び出しますか? 私が取り組んでいるより大きなプロジェクトでこれを行ったところ、テスト容易性はうまく機能しています。

于 2008-08-29T16:45:58.120 に答える
1

一般に、このようなことをテストするための非常に良い方法は、モックオブジェクトを使用することです。

職場では、製品TypeMockを使用して、 Webサービス通信やその他の外部依存関係などをテストしています。お金がかかるので、ニーズに合わないかもしれませんが、素晴らしい商品だと思います。個人的な経験から、NUnitやCCNetと非常によく統合されていることがわかります。

基本的に「このメソッド/プロパティが呼び出されたら、代わりにこの値を返してほしい」と言う非常に単純な構文があります。これは、ネットワーク障害、ファイルが存在しない、そしてもちろんWebサービスなどのテストに最適です。

于 2008-10-06T23:00:56.150 に答える
1

NMock2を見てください。これはオープンソースのモック製品であり、リッチで深い対話をサポートするインターフェイスの「仮想」実装を作成できます。

たとえば、WS インターフェイスが呼び出され、メソッドIServiceを持っている場合、メソッドを 1 回呼び出す必要があり、新しいオブジェクトData GetData()を返すモックを作成できます。Data

var testService = mockery.NewMock<IService>();
Expect
    .Once
    .On(testService)
    .Method("GetService")
    .WithNoArguments()
    .Will(
        Return.Value(new Data());

テストの最後に callmockery.VerifyAllExpectationsHaveBeenMet()を実行して、GetDataメソッドが実際に呼び出されたことを確認します。

PS: 「NMock2」プロジェクトを、sourceforge では「nmock2」とも呼ばれる「NMock RC2」と混同しないでください。NMock2-the-project は NMock に取って代わったようです。

于 2008-10-07T10:52:19.320 に答える
1

これも何かかもしれません - MockingBird。便利に見えます。

于 2009-02-12T06:34:05.193 に答える
0

私の職場では、ユニットテストにTypemocknUnitを使用しています。

于 2009-04-10T12:25:00.573 に答える