ac#環境でのユニットテストの重要性を理解し始めたところです。ここで、データベースの挿入、削除、更新を行うブラックボックス単体テストを実装し、テストが成功した後にデータをクリーンアップするにはどうすればよいのでしょうか。
挿入/更新/削除されたデータをロールバックするプロセスを実際にどのように実行しますか?単にインデックスをリセットして、挿入された行を削除しますか?または、スクリプトを作成してテーブルの元の状態を復元しますか?
私を案内してください、私はそれを感謝します。ありがとう!
ac#環境でのユニットテストの重要性を理解し始めたところです。ここで、データベースの挿入、削除、更新を行うブラックボックス単体テストを実装し、テストが成功した後にデータをクリーンアップするにはどうすればよいのでしょうか。
挿入/更新/削除されたデータをロールバックするプロセスを実際にどのように実行しますか?単にインデックスをリセットして、挿入された行を削除しますか?または、スクリプトを作成してテーブルの元の状態を復元しますか?
私を案内してください、私はそれを感謝します。ありがとう!
開発サイクルでここで行うこと。アプリケーションを開発するときは常に、単体テストと負荷テストを念頭に置いています。したがって、userIdなどを使用してすべてのdatadaseのテーブルに列を作成します。次に、負荷テストまたは単体テストを実行するときに、すべての列にUserId -1を挿入し、負荷テストデータであることを示し、単体テストデータの場合は-2を指定します。次に、データベースの最後に事前定義ジョブがあり、しばらくするとそのデータがクリーンアップされます。
テストが簡潔であり、DALをテストするためには、テストの完了後にロールバックされるトランザクションで挿入/更新/削除を実行する必要があると思います。
もう1つのオプションは、テストクリーンアップメソッドで特定の更新/削除スクリプトを使用して、更新/挿入した正確な変更をテスト前の値にロールバックすることです。
CleanUpメソッドで行を削除するのは良い選択だと思います。
これにより、削除する行のコードを常にテストすることになります。
1つのオプションは、実際のデータベースの代わりにモックデータベースを使用することです。これを説明するリンクは次のとおりです。
私は最近調査をしていて、このスレッドも見つけました。これが私の発見であり、将来の読者に役立つかもしれません。
私は個人的に後者を使用し、最終的にはReseedライブラリを実装しました。これは私のためにすべての作業を行います。
テストフレームワークでは通常、各テスト/テストフィクスチャの実行の前後にいくつかのロジックを実行できます。これは、上記のアイデアに必要になる可能性があります。たとえば、NUnitの場合、これはOneTimeSetUp 、、、、、、属性を使用して実装されます。OneTimeTearDown
FixtureSetUp
FixtureTearDown
SetUp
TearDown