1

私は、今後のプロジェクトでテストをどのように実行する必要があるかを調査するタスクを割り当てられています。

現在、SQL ステートメントの構造化テストを行う必要があるかどうかを判断しようとしています。「get」ステートメントのテスト スイートを用意して、正しいデータが返されることを確認することをお勧めしますが、insert、delete、update をテストしない方がよいという結論に達しました。 DB で選択し、一部の依存関係が欠落している場合、外部キーの例外がスローされます。

今、私はDBunitこれらのテストを実行するために使用するためにチェックアウトしていますが、いくつかの懸念があります。

1.上記のようなテストを実行することは可能ですか? それとも、これらのテストを作成し、テスト データを挿入するのに時間をかける価値はありませんか? おそらく、開発者にこのアドホックをテストさせるだけで十分でしょうか?

2.各テストの適切なテスト データを決定するには時間がかかるようです。テスト データは、DBunit が必要とする flat-xml-file に手動で挿入する必要があります (DBunit によって期待されるデータが生成されるようにする場合、そのデータをフェッチする SQL に依存します)。これは事実ですか?

3. SQL ステートメントを検証するためにデータベース テストを実行するための、より適切で簡単な方法はありますか?

プロジェクトは、Hibernate、Java、および MS SQL Server を使用します。

4

1 に答える 1

0

dbunit を使用するか、プログラムで db コンテンツをビルドできます (各テストで)。重要な部分は、各テストの後にテスト フレームワーク (例: 春のテスト) にロールバックを行わせることです。環境をセットアップすると、単一のトランザクション (取得、挿入、削除) で実行される DML を簡単にテストできます。

DDL をテストしたい場合 (一部のデータベースはトランザクションの外でそれを行います)、手動でロールバックするか、各テストの前にゼロからデータベースを作成する必要があります (例: メモリ db)。Hibernate が検証部分を行うため、DDL テストは通常​​は必要ありません。

はい: クエリをテストする必要があります。環境の準備に時間を費やす価値があります。

于 2014-01-15T21:24:35.987 に答える