問題タブ [spring-test-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.
java - spring-test-dbunit を使用した予約済みデータベース キーワードのエスケープ
Spring-test-dbunit フレームワークを使用して SQL Server キーワードをエスケープするにはどうすればよいですか?
私の@DatabaseSetup("sampleData.xml")
ファイルにはFile
、SQL Server の予約済みキーワードであるというテーブルがあります。SQL Server でクエリを正常に実行するには、予約済みキーワードを角かっこ ( [File]
) でカプセル化する必要があります。
DBunit でエラーが発生する xml ファイルへのデータセットのエクスポートから、パターン エスケープ構成を設定することで dbunit でこれを実行できることがわかります。Spring-test-dbunit を使用する場合、この構成をどこにどのように配置すればよいかわかりません。
提供された xml フィードを使用してテスト データをデータベースに挿入するときに、データベース キーワードを適切にエスケープするように spring-test-dbunit フレームワークに指示するには、どこでどのようにすればよいですか?
コードをご覧になりたい場合は、投稿する必要がある抜粋をお知らせください。喜んで投稿します。
spring - SpringTestDBUnit. 予想されるデータセットと実際のデータセットを比較するときに行の順序を無視する方法
com.github.springtestdbunit を使用して、DAO レイヤーで永続性テストを実施しています。問題は、データがデータベースに保存される順序がわからないため、予想されるデータセットと実際のデータセットを比較するときに行の順序を無視する必要があることです。基本的には、DB ユニットが行の順序を無視する必要があるのと同じ問題ですが、ライブラリの @ExpectedDatabase アノテーションとその列挙型パラメーター DatabaseAssertionMode をハッキングせずに修正する方法を知りたいです。
spring - Spring DBUnit、Spring Data、組み込み H2 データベースの使用時のロールバック エラー
私は好奇心旺盛なエラーで立ち往生しています。
私は小さなDBUnitテストを持っています:
これ以上何もない。最初に、DBUnit (wbSchluesselwertData.xml) によって事前に入力されたエントリを検索します。その後、組み込みの H2 メモリ データベース内に Spring Data CrudRepository を介して 2 つのエントリを保存したいと考えています。
このデータソースは、HibernateJpaVendorAdapter と LocalContainerEntityManagerFactoryBean 内のアダプター自体によってラップされます。
上記の単体テストを実行すると、次のエラーが発生しました。
そのため、接続が閉じられているため、その後のエンティティの永続化の試みは失敗します。休止状態の永続化と私が無視するSpring DBUnitの使用の間に既存の影響はありますか?
どんな助けでも大歓迎です。よろしくお願いします。
よろしく、ボードー
java - MySQL 増分列と DBunit データセットに関する問題
の列を持つ MySQL のテーブルに対して、dbUnit を使用して統合テストを作成しようとしていますautoincrement
。統合テストは次のようになります。
列のないテーブルに対して同じ統合テスト構造がincrement
あり、テストは正常に機能します。次のdataset.xml
ようになります。
デバッグ データをセットアップするために実行されるアクションは、すべてを削除して挿入を実行することであることがわかります。具体的には次のとおりです。
何らかのテーブル (id、regexp、descr) 値 (?、?、?) に挿入します。
私が得るエラーは次のとおりです。
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'regexp, descr) values (1, 'something', 'descr')' at line 1
完全を期すために、DbUnitConfiguration.class
には次の Spring Bean 設定があります。
spring-aop - サービス層の AOP xml で構成された spring-mvc-test 自動ロールバック トランザクション
次の Spring MVC アプリ スタックがあります。
コントローラ -> サービス -> DAO (リポジトリ) -> エンティティ -> MySql InnoDB
トランザクションは、AOP xml 構成を使用してサービス層から開始するように構成されており、アプリは完全に機能します。
現在、spring-mvc-test フレームワーク、UnitDB などを使用して Spring MVC テストを作成しています。テスト クラスには次の構成があります。
テストは次のようになります。
基本的に、テスト環境内で既存の Spring AOP 構成をテスト (使用) し、最初にいくつかの DB データをセットアップし、テストを実行し、テストが完了したらすべてをロールバックします。
上記の構成では、テストは独自のトランザクションを開始しています。指定された伝播構成では、AOP xml 構成によって開始されたサービス層で別のトランザクションに遭遇しています。テストによって開始されたトランザクションがによって開始されたトランザクションを待っているため、ロック タイムアウト エラーが発生します。サービス層での AOP 構成。
私はテストを書いているだけで、実際のコードを変更するのではなく、テスト コードのみを変更する必要があります。私の仕事は、指定された構成でテストによって行われたすべての変更をロールバックする方法を見つけることです。
どんなアイデアでも大歓迎です。
編集
問題となるケースは次のとおりです。
- test クラスは、すべてのテストに対して自動ロールバックを使用して 1 つの大きな新しいトランザクションを開始します。
- dbunit はデータベースに初期データを入力します
- test はコントローラのテストを起動します
- コントローラーは、エンティティの保存/更新などのサービス レイヤーを呼び出します (テスト クラスの先頭で DBUnit によって挿入されます)。ここでサービス レイヤーで新しいトランザクションが開始されます (aop:config によって構成されます) が、ステップ #1 からの大きなトランザクションでサポートされます
- ブーム、エラーが発生: ロック待機タイムアウトを超えました。トランザクションを再開してみてください
DBUnit で挿入されたデータは、同じトランザクション内にあるため、まだコミットされていないと思います。別のトランザクションで DBUnit を使用して初期データを挿入する方法を見つける必要がありますが、テストの最後にロールバックします。
junit - テスト メソッドで DBUnit データセットにアクセスできない
次のようなテストがあります
ログに次のように表示されるため、すべて問題ないようです。
dbunit データセットはトランザクションの作成後に読み込まれるため、データセット データは select で表示されるはずですが、表示されません。選択が実行されると、データセット内のレコードは取得されません。
データセットがロードされているかどうかを確認するために、重複したキーを挿入しようとしましたが、例外が発生したため、データセットが正しくロードされていると思います。
データソースとトランザクション マネージャーの構成は次のとおりです。
アプリケーションではそうでないため、DAO はトランザクションとして構成されていません。しかし、私はそれをトランザクション化しようとしましたが、結果は同じです。
この行の理由がわかりません:
データセットは表示されません。
解決策が見つかりました
を使用して問題を修正しましたTransactionAwareDataSourceProxy
最後に、データソースの次の構成を取得しました。