2011-01-10 7 views
2

私はいくつかのCRUD操作をテストしています。私の質問は次のとおりです。ユニットテスト(C#)

1)Add、Get、およびDeleteメソッドをテストする必要がある場合。パーシスタンス層はデータベースです。 GetとDeleteのテストオブジェクトを用意する必要があるので、これらの3つを1つの[TestMethod]にまとめたり、3つのメソッドに分けてGetやDeleteテストの前にオブジェクトを追加したりする必要がありますか?

+0

こんにちは:)私は別々にテストして個別にテストし、前にきれいにセットアップしておきます。 –

+1

データベースに関係するテストが「ユニットテスト」と呼ばれることがあるかどうかはわかりません... – Lukasz

+0

@Lukas BaranはデータベースにアクセスせずにDAOをテストしても、クエリやDDLなどで隠されたバグは表示されません。 inmemory DBまたはaをコミットする前に実行します。つまり、UnitTesting DAOは統合テストコードとよく似ていますが、依然としてUnitTestingフレームワークを使用することができます。 – tobsen

答えて

4

理想的には、ケースごとに個別のテストを行う必要があります。

各テストの初期条件を設定するには、何らかの種類の模擬テスト(フレームワークまたはデータベースを自分で設定する)を使用する必要があります。だからを追加テストする

は取得テストおよび削除するためにその後

など空のデータベースで開始し、その後、いくつかの新しいデータを追加し、(それが失敗した場合)、再び同じデータを追加しようと、不完全なデータを追加しますあらかじめ設定されたデータベースから始め、必要なさまざまなテストを実行します。

+0

ありがとうございました。私たちのドキュメントによれば、私はデータベースにオブジェクトを追加するだけでよいので、私はこの時点で嘲笑を使うことを躊躇しています。 – Joe

1

どのようなテストでも簡単になります:)返されるメソッドが合格/不合格である場合は、それは良いはずです。

+0

私は個人的にテストのためにnunitを使っています。http://www.nunit.org/index.php?p=quickStart&r=2.2.10 – Dasupalouie

2

私は通常別のテストを行います。私が "get"型メソッドをテストしている場合、テスト設定では、必要に応じてオブジェクトを挿入します(一般的にいくつかのモックフレームワークを使用して)、実際のgetメソッドと同じ方法でアサーションされません。

これは、追加の実装が中断した場合、適切なカバレッジを仮定して、getとaddのテストがどちらか一方の方法で失敗することを意味します。しかし、それはあなたが何とかしたいもののようなものですよね?

1

こんにちは:)私は個別にテストして個別にテストし、前にきれいにセットアップし、後でそれぞれをクリアします。

2

CRUDを処理する独自のORMを作成している場合は、別のテストで各アクションを区切ることをお勧めします。テスト・プロジェクトを維持するのが難しくなるため、大きなテストを作成しないでください。各機能を個別にテストします。

CRUDを処理するために3番目の部分ORMを使用している場合は、信頼できない限り、このツールをテストしないでください。しかし、この場合は、より良い選択肢を見つけるべきです。 :)

すべての機能が動作していることを確認するためにいくつかの受け入れテストを行い、現時点では実際にデータベースにアクセスします。

+0

工具を突っ込むべきではない;) –

関連する問題