1

Entity Framework + テストの経験を進めようとしています。テーブルを削除し、新しいデータベースを作成し、テストに必要なテーブルに行を作成し、テストを実行し、繰り返すテストを NUnit で作成しました。

(メモリ内データベース)を使用したテストにはいくつかの欠点があることを説明する2 つの異なるテスト戦略に関する素晴らしい投稿があります。Effortとにかく、実際のデータベースに対してテストすることを強く好みました。実際のデータベース検証して、物事がデータベースに収まるかどうか、およびその方法を検証できるからです。

次に、この投稿に出くわしました。ここで、アプリケーションとテスト用に異なるデータベースサーバーを使用する必要がある/可能であることがわかります。たとえば、アプリケーションは SQL Server に対して実行され、テストは SQL Server CE に対して実行されます。

現在、SQL Server Express で動作する統合テストがいくつかあります。私のアプリケーションは、同じデータベース サーバー インスタンスに対して、同じ接続文字列で実行されます。

それは賢明ではありませんか?

私は長い目で見れば困っていますか?

アプリケーション (SQL Server) と統合テスト (SQL Server CE) に別のデータベース サーバーを使用することが必要/推奨されているかどうかを誰かが確認して説明できますか?

よろしくお願いします。

4

1 に答える 1

7

SQL Server をデータベースとして使用し、SQL Server CE をテスト データベースとして使用する価値があるかもしれません。これらのテストが通常実行すること (データベース全体を作成し、迅速なトランザクションを実行し、それを完全に破棄する) については、SQL Server よりも SQL Server CE でテストを実行する方が高速である可能性があるため、これは一般的です。また、開発マシンに SQL Server を完全にインストールする必要がないことも意味します。

ただし、これを行う必要はありません。これをしたくない人もいるかもしれません。SQL Server でのみ利用可能な機能をプログラムで使用している可能性もありますが、これは基本的に SQL Server CE を使用できないことを意味します。

最後に、コードが SQL Server CE では機能するが、SQL Server では機能しない可能性があるため、テスト中に問題が発生することはありません。ある時点で、MySQL に対してアプリを実行しましたが、いくつかのテストを実行するために sqlite を使用しました。sqlite と MySQL の動作にはわずかな違いがあり、テストでは問題なく動作しましたが、ライブでは失敗しました。

したがって、ライブで使用するのと同じ種類のデータベースに対してテストできることをお勧めします。SQL Server CE テスト データベースに対して開発するなど、いつでも妥協点を見つけてから、新しいバージョンで稼働する直前に SQL Server でのテストに切り替えて、そのケースもカバーすることができます。

于 2013-02-24T09:39:24.333 に答える