5

NUnitとテストデータベースを使用してコードを検証するにはどうすればよいですか?理論的にはモック(moq)を使用しますが、私のコードはより保守的な形で修正されており、すべてのモックをセットアップする必要はありません。

テストプロジェクトを作成してから、実際にテストデータベースに接続して、アプリで実行するようにコードを実行するテストを作成しますか?次に、assertsを使用してコードをチェックし、要求しているものが正しく返されていることを確認しますか?

4

2 に答える 2

6

NUnitとテストデータベースを使用してコードを検証するにはどうすればよいですか?理論的にはモック(moq)を使用しますが、私のコードはより保守的な形で修正されており、すべてのモックをセットアップする必要はありません。

モックの使用は、クラスの正確な実装動作をテストする場合にのみ役立ちます。つまり、あるクラスが別のクラスの特定のメソッドを呼び出すことを文字通り主張しているということです。例:Ninja.Attack()がSword.Unsheath()を呼び出すことを表明したいと思います。

テストプロジェクトを作成してから、実際にテストデータベースに接続して、アプリで実行するようにコードを実行するテストを作成しますか?次に、assertsを使用してコードをチェックし、要求しているものが正しく返されていることを確認しますか?

これは単なる古い単体テストです。これを達成するのに障害がなければ、これが最も効果的なテスト方法になることを示す良い指標になります。それは実用的で非常に効果的です。

あなたが言及しなかったもう1つのテストツールがあります。それはスタブと呼ばれます。詳細については、この古典的な記事を読むことを強くお勧めします。

http://martinfowler.com/articles/mocksArentStubs.html

于 2012-12-07T22:51:31.877 に答える
2

理論的なケースについて話しているわけではないので、これが私が行うことです-私の理解から、あなたがテストしたいのは、アプリがDBに適切に接続し、目的のデータをフェッチしているかどうかです。

  1. 同じスキーマでテストDBを作成します
  2. その中にダミーデータを追加します
  3. コードからDBへの接続を開き、必要なデータを要求します
  4. アサーションを記述して、DBから取得したものを期待したものと比較してテストします

また、これらのテストは自己完結型ではなく、データベースが稼働しているかどうかなどの他の要因に依存するため、単体テストと呼ばれるべきではないと思います。アプリケーションのさまざまなコンポーネントが一緒に使用されたときに期待どおりに機能しているかどうかをテストする統合テストに近いと思います。

(ダンの答え^^私が言いたかったことをほぼ要約しています)

于 2012-12-07T22:58:58.007 に答える