2013-04-20 10 views
7

私はSQLデータベースを扱うのが初めてですが、データベースのテストに直面しています。セキュリティ上の理由から、クエリや更新はストアドプロシージャを使用して行われます。SQLユニットのテストストアドプロシージャ

他のストアドプロシージャをテストするためにストアドプロシージャを使用するピアから私に提案されました。これは、自分のストアドプロシージャを単体テストするための良い解決策ですか、悪い解決策ですか?

+1

データベースストアドプロシージャをテストするもう1つの方法は、[DBUnit](http://www.dbunit.org/)を使用して、 – flup

答えて

8

私は、Visual Studioを使用して優れた解決策を見つけた:それはあなたがSQLストアドプロシージャのためのユニットテストを作成することができます Visual Studio Unit Testing

、あなたはまた、正規表現を使用してデータベースを取り込むことができます - 非常にクールなものを。

1

私は、どのツールがSQLステートメントまたはストアプロシージャの単体テストを実行できるか分かりません。 私は通常、そのためのテストを行うSQLスクリプトを書いています。

  1. もちろん、元のデータベースと同じ構造を作成します。
  2. データを準備します(元のデータベースから一部のデータをインポートします)。
  3. ストアドプロシージャを呼び出します。
  4. 次に、データが正しいかどうかを確認します。

は時々、いくつかの例外やエラーが、その後スローされる場合は、ストアドプロシージャをチェックすることができ

IF EXISTS (SELECT * FROM XX INNER JOIN XXX ON XXXXXXXX WHERE XXX=XXX) 
    RAISEERROR XXXXXX 

のようないくつかのassert文を書きます。

しかし、それは時間の無駄です。

私は通常、ストアドプロシージャの実行パスをすべてチェックして、主なエラーの予想ポイントをテストします。

1

私はTSTをSQL Serverのテストフレームワークとして非常に肯定的な結果を得て使用してきました。 それはうまく動作し、Team CityのCI環境の一部としてそれを統合することさえ可能です。

キーは、テストデータの設定方法に非常に注意が必要です。どんなテストフレームワークを選択しても、テストデータビルダパターンを必ず適用してください。そうしないと、テストリファクタリングの問題が非常に迅速に発生する可能性があります。

5

DbUnitNUnitのほかに、tsqlの作成が好きな場合はtSQLtを使用できます。 tSQLtは、tsqlの単体テスト・ケースを書くためにtsqlで書かれたオープン・ソース・フレームワークです。

1

dbunit.orgのDbUnitは良いフレームワークです。もう1つのすばらしいツールはtsqlt.orgのTSqlUnitとtsqltです。