2016-06-27 7 views
0

このトピックに関する多くの情報を見てきましたが、具体的な例を提示して特定の質問をしたかったのです。ASP MVC 5統合テストとSDKによるユニットテスト

私は現在、OEM提供のSDKを使用して電話システムに対してプログラミングしている開発プロジェクトの途中です。私はいくつかのインターフェイスを作成しました& SDKの機能を拡張し、簡単にテストのための依存性注入をサポートするためにこれらをリファクタリングしました。最下位レベルでは、接続インタフェースとクエリオブジェクトを受け入れる「retrieveUserInfo」のようなメソッドがあります。

ユニットテストの場合、I は実際にテレフォニーシステムへの接続を作成し、特定のユーザーを取得して、正しいデータをチェックします。このテストは私のミドルウェアと基礎となるOEMライブラリが正しく動作していることを私に知らせるので意味があります。しかし、実際には外部システムとの接続が確立されているため、統合テストに似ています(電話システムに接続できず、ユーザーが期待通りに構成されていないとテストに失敗します。私のビジネスロジックでは、または下にあるライブラリに問題があります)。

このテストに統合テストのラベルを付ける必要がありますか?もしそうなら、どうすればユニット "retrieveUserInfo"のようなテストメソッドにしようと思いますか?どのようにこれらの2種類のテストを適切に分割するのですか?

答えて

0

「ユニット」が何であるかを定義することは非常に困難です。しかし、あなたがテストしているものが、実際には別のシステムを呼び出す外部ライブラリにコールしているのであれば、間違いなく統合テストの対象です。

単位が限定されているのはちょっと主観的ですが、クラスやクラスの公開メソッドに限定されている可能性があります。

外部依存関係のメソッドを呼び出すメソッドを単体テストする場合は、モックまたはスタブを使用します(良いモックライブラリの場合はMoqを参照してください)。

+0

外部の依存関係を模擬し、ビジネスロジックをテストする*ユニット*テスト専用のVisual Studioプロジェクトを1つだけ持つことができました。また、外部ライブラリへの呼び出しを実際に行う統合テスト専用のVSプロジェクトもあります。右? – slashNburn

+0

あなたは確かに別の単体テストプロジェクトを持っていますが、モックは石で設定されていません。 1つの解決策は、電話システム(ITelephony)のインタフェースを抽出し、偽の実装(MockTelephony)を追加し、配線をすべてコードで実行することができます。あなたの単体テストプロジェクトでは、モックを使うことに変わります(あらかじめ定義されたデータを返すことができます) –

+0

そうですね、統合と単体テストを分割するのが普通です。一部の人は、統合テスト期間中にあなたを恥ずかしく思うかもしれません。すべてのテストスイートは必然的にユニットテストよりもオーバーヘッドテストのメンテナンス、統合テストにつながります。 –

関連する問題