質問

オブジェクトのモック (単体テスト フレームワークと連携した JMock、NMock、RhinoMocks などのフレームワーク) を日常の開発プロセスに組み込んでいる人がどれくらいいるか知りたいです。あなたの経験は何ですか?

ご存知のとおり、私は GIS (地理情報システム) プラットフォーム上で開発を行っており、作業のほとんどは何らかの方法でデータを処理することに関係しています。そのデータ オブジェクト モデルは非常に複雑であるため (多数のクラスとインターフェイス、すべて COM ベース)、モックすることも非常に困難で面倒です。この場合、テスト スイートを作成するときにモックによって多大なオーバーヘッドが発生します。同じような状況にある人はいるだろうか、あるいはただ、(どのような状況に置かれていても)嘲笑することがあなたにとってどのような効果があるのか​​気になります。

役に立ちましたか?

解決

私が取り組んだ最近のプロジェクトでは、単体テストのアプローチでモック オブジェクトを広範囲に使用しました。このプロジェクトは 100% Java で、適度なサイズ (コメントなしのコードが約 100,000 行) でした。これは Swing ベースのデスクトップ アプリケーションであり、ユーザー インターフェイス ロジックをテストするために私たちが見つけた唯一の効果的な方法は、自動テストのために実際の Swing ユーザー インターフェイス クラスの代わりにモック オブジェクトを使用できる MVC バリアント設計を使用することでした。また、データ アクセス レイヤー (Hibernate/DAO) のテストでもモッキングを広範囲に使用しました。

ユーザー インターフェイスの使用では、モックの構築は簡単かつ簡単でした。また、アプリケーション (Fowler Passive View) の設計にはモックが簡単に組み込まれました。これは、データ アクセス層のテストに使用されたモックには当てはまりませんでした。しかし、それは明らかに努力する価値があったと言えます。実際、「努力」のほとんどは、開発者が個々のモックを作成するために必要な作業を最小限に抑える、再利用可能なソリューションを考え出すことに重点を置いています。時間をかけて、GIS データ レイヤーを簡単にモックアップできる、状況に応じたアプローチを見つけ出すことをお勧めします。それか、各クラスを手動でモックアップするだけです。いずれにせよ、モックに依存する自動化された単体テストを実行できる機能には価値があります...

他のヒント

私の状況では仕事を模擬します すごくいい。 しかし、私は Python を使用しています。Python は非常に動的なので、テストに関わる多くの作業がはるかに簡単になります。

あなたのような状況では、アプリケーションが主である場合、 データ駆動型 (私が見た限りでは) モックはそれほど役に立たないかもしれません。テストには、データを渡してそれが出力されるのを確認するだけで十分です。アプリケーションが有効であることを確認したいと思います 十分にモジュール化されている, したがって、このアプローチは適度に小さなコンポーネントに適用できます。

モックは、ある種のプロジェクトで役立つ場合があります。ただし、モック化には非常に時間がかかり、ROI が低い場合があります。

Sharepoint をテストしようとすると、モックすることが唯一の方法のようです。 タイプモック シールされたクラスを模擬できるようになります。

私の場合、モッキングは非常に広範囲に使用されています。モックは通常、外部依存関係を持つクラス用です。ネットワーク、データベース、ファイルシステム。モックが使用されていない場合、これらのいずれもテストに不安定さを引き起こす可能性があります。

入力する偽のデータが大量にあるためにモックの作成にコストがかかる場合は、事前に入力されたデータ オブジェクトを定数として設定し、それらを使用するか、わずかに変更を加えたコピーをテストで使用できます。このようなデータ オブジェクトに外部依存関係がある場合は、2 つの問題を分離できる方法でリファクタリングを行うとよいでしょう。

Dave Bouman によって開始されたイニシアチブでは、ArcObjects 関連の単体テストで使用するモックのコミュニティ ライブラリを構築しようとしています。彼のブログとこの svn リポジトリには、GIS システムの単体テストに関する優れた情報が含まれています

http://blog.davebouwman.net/CategoryView,category,Unit%2BTesting.aspx

http://svn2.assembla.com/svn/arcdeveloper/TestingUtilities/trunk/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top