問題タブ [dbunit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - Maven / Junit / DBUnitプロジェクトでの統合テストの前/後にデータベースを作成/ドロップする最良の方法は?
これを行うためにmaven-sql-pluginを使用する人がいるのを見てきました。しかし、それはDBUnitに適したタスクのようです....おそらくテストスイート全体の最初に。
ここでのベストプラクティスは何ですか?
transactions - Spring Test を使用した DAO 統合テストの自動ロールバックは良い方法ですか?
DAO 統合テスト メソッドに @Transactional のアノテーションを付けた場合、Spring Test は、各テスト メソッドの完了後にデータベースへの変更を喜んでロールバックします。@BeforeClass メソッドを使用してテスト データを 1 回ロードでき、すべてのクリーンアップが処理されるため、これらは非常に便利に思えます。
しかし、コミット中に発生する障害を発見する機会を逃してしまうため、これが良い方法であるかどうか疑問に思います。DAOのdbunit統合テストでトランザクションを使用してクリーンアップを支援することについてのコンセンサスは何ですか??
junit - SpringTestでケースごとに1回DBUnitテストデータをロードする方法
Spring Testは、テストメソッド内でデータベースに加えられた変更をロールバックするのに役立ちます。これは、各テストメソッドの前にテストデータを削除/再ロードするために時間をかける必要がないことを意味します。
ただし、@ BeforeClass Junitアノテーションを使用すると、データローダーが静的になります。ここで検討する質問: jUnitのfixtureSetupを静的にする必要があるのはなぜですか?
データ初期化メソッドが静的である場合は、データ接続メソッドとデータソースを静的にする必要があります。すべてを静的に強制する必要があります。これは機能しません。どの時点で、私は尋ねます-とにかくすべてのテストでテストデータを削除/再ロードする必要があるときに、変更をロールバックするSpringTestの機能は何が良いですか??!?!
xml - マルチモジュールJava/MavenプロジェクトのDBUnitのXML DTDへのパス?
マルチモジュールのmavenプロジェクトがあります。persist モジュール内には、DTD を参照する多数の XML ファイル データ ファイルがあります。
DTD は XML ファイルと同じディレクトリに保存され、Eclipse でもこれらの XML ファイルが有効であると報告されます。
しかし、アプリケーションを実行すると、DBUnit FlatXMLDataSet は DTD を見つけることができないため、FileNotFound 例外をスローします。どうやらルート プロジェクト ディレクトリ (myproject/ など) で DTD を探しているようです。XML ファイル自体と同じディレクトリ (myproject/persist/target/test-data など) で DTD を検索することを期待していました。
DBUnit のソース コードを見ると、「相対 DOCTYPE uri は現在の作業ディレクトリから解決されます」と書かれています。
これを修正する良い方法は何ですか?
java - DBUNITとJunitに関する質問
DBUNITを使用してテストしたいPL/SQLで記述されたデータベースプロセスがあります。pl / sqlプログラムは、1つの表からのデータを処理し、新しいデータを新しい表に生成します。場合によっては、元のテーブルのフィールドも更新されます。
これをテストするためにdbunitを使用する方法に少し混乱しています。それを読んで、私はxmlファイルでデータを指定する必要があるように見えますが、xmlファイルを構造化する方法を理解できません。考えてみると、次のデータファイルが必要だと思います
- tableAのデータを含むxmlファイル
- tableBのデータを含むxmlファイル
- 更新されたtableAのデータを含むxmlファイル
ワークフローはこんな感じ
- テーブルAをロード
- pl / sqlプロセスはデータを処理し、tableBに結果を生成し、tableAの一部のフィールドを更新します。
- tableBのxmlファイルをロードし、結果を比較します。
dbunitがこれをどのように支援できるかについて少し混乱しています。例えば
- xmlデータはメモリにロードされ、TableBにあるものと比較されますか?
- tableAの更新をどのように比較しますか?
これを行うためのより良い代替案またはアプローチを提案できるかどうかもお知らせください。
ありがとう
java - Hibernate & DbUnit で AbstractTransactionalDataSourceSpringContextTests を使用する - 挿入されたデータが見つからない
すべて、Hibernate を使用する Dao の単体テストを作成しようとしています。私もSpringを使用しているので、AbstractTransactionalDataSourceSpringContextTestsを拡張し、onSetUpInTransactionメソッドの各テストの前にDBUnitを使用してデータベースにデータを挿入しようとしています。
ログから、DbUnit が onSetUpInTransaction にデータを正常に挿入できることがわかります。ただし、Dao (したがって、Hibernate) を使用してそのデータ (testGetPersonById2) にアクセスしようとするテスト メソッドを実行すると、すべて同じトランザクションで発生するはずですが、データが見つかりません。テスト メソッドの実行が終了すると (失敗します)、AbstractTransactionalDataSourceSpringContextTests からのログ ステートメントで、トランザクションが正しくロールバックされることがわかります。
onSetUpInTransaction と Hibernate セッションは異なるトランザクションを使用している必要があるようですが、その理由はわかりません。このような作業の例はありますか? 私が欠けているものについてのアドバイスは?
ここに私がこれまでに持っているものがあります:
更新: これが私の春の設定です:
unit-testing - 連続したテストでのデータセットの読み込みは、「クローズドセッション」で失敗します
2つのテストクラスがあり、どちらもunitilsアノテーションが付けられています
ターゲットデータベースはHSQLDBであり、 testngアノテーションが付けられた抽象スーパークラスメソッドで開始されます。
テストランナー(Maven Surefire)が2番目のテストに到着すると、データベースは正しくインスタンス化されますが(ログで確認できます)、unitilsまたは実際にはdbunitはデータセットのロードに失敗します。
dbunitが最初のテストクラスで HSQLDBに接続できるのに、2番目のテストクラスでは接続できない理由に戸惑います。
enybodyには手がかりがありますか?
ありがとうございました!J。
java - dbunit アサーションが失敗を適切にスローしない
以下は、 org.dbunit.Assertion.assertEquals(ITable a, ITable b)の動作をテストするテスト ケースです。
ここでは両方の DefaultTable の値が一致していませんが、JUnit は上記のテストケースに失敗していません。私は日食からそれを実行していますが、次のように、テストケースの下のルート化されていないテストで0エラーと0障害が発生します。
DBUnit API をデバッグしたところ、必要に応じてデータ不一致の例外がスローされましたが、最終的に SpringJUnit4ClassRunner から戻ると、テスト ケースの失敗としてスローされません。
ここで何かが欠けていると思います。Plsは私を修正するか、これに対する解決策を教えてください. よろしくお願いします。
php - PHPUnit と DBUnit - はじめに
PHPUNit テストに DBUnit レイヤーを追加する方法について、優れた実用的なチュートリアルまたは本へのリンクを持っている人はいますか?
コードに従ってみました
XML は、mysqldumpコマンドによって作成されます。CSV、またはメモリ内の配列を喜んで使用します(機能するものは何でも)
残念ながら、私はこのシステムを開始できないようです。
hibernate - OutOfMemoryError: HSQLDB、DBUnit、unitils、Hibernate、Spring を使用して Maven マルチモジュール単体テストを最適化しようとしています
何千ものテストを含む大きなマルチモジュール Maven プロジェクトがあります。各テストは、SpringApplicationContext アノテーションを使用して DAO やサービスなどをロードします。私の unitils 構成は次のようになります。
私の休止状態の設定は次のようになります。
テストを実行すると、ヒープに割り当てられた 2GB が最終的にいっぱいになります。Permgen は約 400MB に達します。ヒープ ダンプを見ると、char、java.lang.String、およびjava.lang.String[]がインスタンス全体の約 40% を占めています。
これらのインスタンスのいくつかをスポット チェックすると、GC ルートは次のようにトレースされます。
- Spring コンテキスト マネージャー (コンテキスト XML 抽出の形式)
- SessionFactory (クエリの形式)
これら2つのことを最適化したいのですが、それぞれ次のことが原因だと思います。
- 各テストには @SpringApplicationContext アノテーションがあります
- また、各テストは unitils @DataSet アノテーションを使用して、そのテスト用のデータをロードします。
注: jdbc:hsqldb:file を使用してヒープから一部のデータをオフロードします (つまり、jdbc:hsqldb:mem を使用する代わりに)
バージョン:
hsqldb 1.8.0.7
Spring 3.0.4.RELEASE
unitils 3.1
PS評価が 1500 以上の人は、この質問に「unitils」のタグを付けてください。