メモリー中のDBMSのためのユニット試験
-
20-08-2019 - |
質問
い満足のいくのオプションユニット試験my.純ダルの授業それらはダルの授業、データベースへのアクセスを直接利用ADO.NET.現在使っていインスタンスの指定のデータベースの試験もしたか高速化オプションがあり---以降のユニットテストを走らせることも必要ですし、出来るだけ早い時期にメモリ内の解決が望ましいと思う。
付言するとしていまつっTSQLてんみさん用マイクロソフト。
解決
あなたが述べることを考えます
私が縛られていることにも言及する必要があります 私は今までだので、私自身は、TSQLします マイクロソフトを使用することになるだろう プラットホームます。
その後のSQLServerのコンパクト版を使用することで、ニーズのために働くことがあります。 それがメモリに完全に動作しませんが(それは一度に複数のテストで使用することができるように、いかなる編集がメインデータベースファイルに発生していない)読み取り専用モードで動作することができる
いくつかの落とし穴がありますが、何のストアドプロシージャがサポートされていない、いくつかのデータ型を変換する必要があり、特定のデータ型は(のみ4000文字まで行くことができ、特にvarchar型)厳しい制限を持ってLINQのは、SQLにも適切にサポートされていません。
それでも私はほぼ完全に良い結果との適切なSQL Serverデータベースの交換をドロップするようのSQLServer Compact Editionのを使用しています。
他のヒント
私は SQLiteのが最良の選択肢であることをを見つけました。けれども、私はNHibernateはを使用していますが、それだけでセットアップするために秒を要するので、それがゼロに設定です。しかし、あなたは、エンジンのこれらのタイプは、一般的に
(あなたはADOプロバイダを使用している場合は、テーブル名にスペースがある場合、たとえば、SQLiteのが吹くまで)あなたが必要な場合がありますいくつかのことを欠いていることを認識する必要があります確かに、@TopBananaは「実際の」データベースを使用していないとの問題のいくつかについての権利です。しかし、インメモリRDBMSはあなたがすぐに本当に実行するテストのこれらの種類のために完全である(例えば、増分またはCIのためのチェックインのテストビルド)。
他の大きな利点は、セットアップを心配したり取り壊す必要がないということです。これは、開発者Aは、あなたのdevのデータベースを壊したので、あなたのチェックインが失敗持って信じられないほど非生産的だ; - )
私は、生産のために、あなたのユニットテストのために同じデータベースを使用することをお勧めします。あなたは本当にあなたが生きて問題をデバッグしているときの足であなたを撮影いくつかの奇妙な違いは必要ありません。
あなたはNHibernateのための本当に大きなユニットテストスイートを見ている場合は、、あなたはそれが(ベースディスク)SQL Serverを使用していることがわかりますし、テストが驚くほど速く実行されます。これは、SQL Serverがために最適化されたものではないユニットテストの平均集合、より上に行く多くのテーブル作成/削除があることを考慮し、より印象的です。
私は(URL、申し訳ありません覚えていないことができます)ウィンドウにRAMディスクをマウントするためのソフトウェアがあることを聞きました。
その上で、テストデータベースを作成することは興味深いかもしれません。
はSQLサーバー 本当に のボトルネック用のユニットテスト?
い:
- ご紹介のご単位試験のようになSQLプロファイラー).いすべて遅いの?少し遅?なぜですか?
- においてユニット試験うです。の設定を以下のような基本的な決まり文句コードも重?
- 場合はSQLがボトルネックする 嘲笑う枠組み, は、模擬おSQLます。
また同様の課題をOracleしかったの
いた実質ユニットテストなタッチのdbが使用疑似サービスの代わりに
タグ付きDB試験が実際に必要なOracleに比べる試験が実行をHSQLDBまたはH2またはその他のメモリにデータベースです。できました。
の試験は、実際に使用しているOracle機能を使用していました通常のOracleインスタンスが走り、RAMディスクです。
この試験には相当になります。