1

いくつかのテストプロジェクトを実行するカスタマイズされたワークフローを使用しています。これらのプロジェクトのいくつかは、データベースを使用して(これは別のコンテキストにある必要があることはわかっていますが、テストコードを変更することはできません)、いくつかのテストケースを実行します。

関連性があるかどうかはわかりませんが、テストフレームワークとしてXUnitを使用し、ORMとしてnhibernateを使用しています。

私が行ったのは、テストプロジェクト用にSQLEXPRESSサーバーに必要なすべてのデータベースをセットアップして一時的にアタッチするカスタムアクティビティを作成することです。また、アクティビティは、作成した一時データベースを指す.configファイルを変更します。ここまでは順調ですね。

ここでの問題は、残念ながら(論理的なデータベースの変更のために)古く、手動で更新する必要がある.mdfテンプレートが必要ないことです。

私が直面しているもう1つの問題は、テンプレートがこのプロセスの自動化を損なうだけでなく、ビルド定義からこれらのプロジェクトにアクセスする開発者が、自分のマシンでローカルにテストを簡単に起動できないことです。MDFを取得し、DBをマウントし、テストプロジェクトを構成して、実行する必要があります。これは、開発者にコードを単体テストする意欲を与えるには多すぎる操作です。

最善のアプローチは何ですか、またはこの問題で可能な解決策をどこから調べ始めるべきかについて誰かがアドバイスを持っていますか?

ありがとう!

4

1 に答える 1

1

私の意見では、データベースをローカルでうまくテストする唯一の方法は、データベースをモックするか、いくつかの単純なデータを含む組み込みデータベースを使用することです。

実際、これらのアプローチは両方とも、開発チームの作業を必要とします。

テストを実行する前にバックアップを作成してデータベースを復元する必要がないため、データベースをモックすることを強くお勧めします。データベースをコードでモックすると、テストは実質的に即座に実行され、管理する外部依存関係はありません。

開発者に、モックできるnhibernateの既存のインターフェースを見つけるか(Moqはモックを作成するのに適したライブラリ-http://code.google.com/p/moq/ 、データアクセスレベルでインターフェースを導入する必要があります。彼らはデータベース呼び出しを偽造することができます。

埋め込まれたアプローチは、ここではかなり不適合だと思います。

于 2013-01-30T15:37:59.083 に答える