問題タブ [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.
unit-testing - DbUnitで複数のテストが同時に実行されるのを防ぐ方法は?
私はプロジェクトのテスト環境に取り組んでおり、DbUnit.NET を使用して多くのデータベース相互作用テストを行うことを検討しています。ただし、非常に大きな質問が 1 つあります。
私たちは Oracle に対して実行しており、開発者ごとに個別のテスト DB インスタンスを設定することは実際には現実的ではありません (特に、すでに時間に縛られている DBA が 1 人しかいないため)。これは、すべての開発者と継続的インテグレーション サーバーがすべて同じ DB スキーマを使用する必要があることを意味します。
では、質問に移ります: 複数の人が同時にテストするのを防ぐ良い方法はありますか? テストが実行されていることを示すレコードを db テーブルに入れ、テストが終了したら削除するのは簡単ですが、NUnit にはテスト セッションの開始時と終了時に何かを実行する方法がありません。
他の考えはありますか?それはかなり一般的な問題のようです...または、テストを実行する可能性のある開発者/テスターごとに、実際には誰もが個別のDBインスタンスを実行していますか?
java - dbUnit データ型
dBUnit を使用しており、実際の DB データセットを使用して、事前定義された FlatXmlDataSet の行をアサートしようとしています。問題は、検証コード フィールドの getValue が、そのデータが FlatXmlDataSet から取得された場合は文字列を返し、実際のライブ データベースから取得された場合は整数として返すことです。これは、文字列以外のすべてのデータ型に当てはまります。比較する前にすべてを文字列に変換する何かを書くことはできますが、より良い方法はありますか?
私のコード:
...(さらに下へ)
これは、私が丸呑みする test.xml です。
java - 静的データの管理
静的データ、つまり国のリストなどの頻繁に変更されないテーブルのデータを管理するための Java (または Groovy) ソリューションを探しています。
国のリストをテキスト ファイルに保存し、サーバーの起動時にテーブルを自動的に更新したいと考えています。単純にすべてのテーブルを削除してからテキスト ファイルにデータを再挿入することはできません。これはキーの制約に違反するからです。
DbUnit は、XML ファイルから DB へのデータのロードをサポートするライブラリです。それは私が必要とすることをほとんど行うリフレッシュ操作を持っています。これにより、ファイルにあるがDBにない行が挿入され、ファイルにもあるDBの行が更新されますが、DBにあるがファイルにない行は削除されません。
誰かがこの問題の良い解決策を見つけましたか?
ありがとう、ドン
java - DBUnitとSQLServerがソケットを閉じます
同じ場所にあるDBUnitでこの例外が発生し続けます。
等
これは、テーブルから列のメタデータを読み取ろうとしたときに発生します。これを行うコードは次のようになります。
MsSqlConnectionインスタンスである接続。最初はネットワークの問題だと思っていましたが、その理論には2つの問題があります。まず、テストを実行するサーバーとデータベースは両方とも同じxenサーバー上の仮想マシンであるため、実際のネットワークはありません。第二に、問題は一貫していませんが、毎回同じ場所で発生します。100を超えるデータベーステストがありますが、これと同じものが失敗します(失敗した場合)。
誰かが同様の問題に遭遇しましたか?洞察はありますか?
java - データベース スキーマの変更と単体テスト
始める前に、データベースにヒットするテストを「単体テスト」ではないと考えている人がかなりいることを知っています。「統合テスト」の方が適切な名前かもしれません。いずれにせよ、データベースにヒットする開発者テスト。
単体テストを有効にするために、開発者のローカル データベースを用意し、これをクリアして、各テストの開始時にdbUnitを使用して既知のデータ セットを入力します。テストで使用されるテーブルが何らかの方法で変更され、すべての XML データセットを手動で更新する必要があるまで、これはすべてうまく機能します。これは苦痛です。他の人も同じ問題にぶつかったにちがいないと思います。データベースへの入力が必要なテストでは、何を使用し、テーブル定義の変更をどのように処理しますか? (私は Java を使用していますが、さまざまなテクノロジを利用したソリューションに対してオープンです。)
編集: 少し明確にするために。次のような不自然なテストがあります。
その中に、tRevision と tIssue という 2 つのテーブルがあります。ロードされたリビジョンは、tIssue からの少量のデータを使用します。その後、tIssue は、リビジョンが気にしない新しいフィールドを取得します。新しいフィールドは「非 null」であり、適切なデフォルトがないため、tIssue.xml が無効になるため、このテストは失敗します。
このような小さな変更では、tIssue を編集するのは難しくありません。しかし、各フローで XML ファイルの数が膨らみ始めると、大量の作業になります。
乾杯、
mlk
java - Java:DBunitils + Spring:異なるHibernate-方言
私は現在、依存性注入にスプリングを使用しています。Hibernateは通常の実行にpostgres方言を使用しますが、DBUnitilsDatabank-TestingにHSQLを使用したいと思います。
私のSpring-Configurationにはこれが含まれています:
フィールドはMavenリソースフィルタリングに置き換えられます。
DBUnitilsのSpring-Configruationには、次のものが含まれています。
そのため、UnitilsDataSourceを使用して実行構成のdataSourceをオーバーライドします。
問題:一部のコマンドが機能しないため、HSQL-Test-Databaseに対してPostgres-Dialectを使用してテストを実行できません。 私の頭に浮かんだ唯一の解決策は、Mavenのリソースフィルターを切り替えることですが、これは手動で行う必要があります(すべてのMaven呼び出しで「-PTEST」を提供することによって)。では、hibernate.dialectをオーバーライドする可能性はありませんか?
ありがとう!
phpunit - PHPUnit データベース拡張機能 - 空のデータセットを作成するには?
空のテスト テーブルを作成したいと考えています。digitalsandwich の例を使用すると、次のようなものが必要になります。
createFlatXMLDataSet() 以外の方法を使用する必要がありますか? または???
java - NoSuchTableException に直面することなくプレーンな JDBC と HSQLDB で DBUnit をテストするにはどうすればよいですか?
プレーンな JDBC と HSQLDB で DBUnit を使用しようとしていますが、以前に Hibernate で DBUnit を使用して大きな成功を収めましたが、うまく動作しません。コードは次のとおりです。
これが問題の dataset.xml です。
このテストでは、NoSuchTableException が発生します。
databaseTester.onSetup() 行を削除すると、代わりに SQLException が発生します。
次のようにアクセスできるため、データセット自体は機能しています。
ここで何が欠けていますか?
編集: @mlk が指摘するように、DBUnit はテーブルを作成しません。データセットを追加する前に以下を挿入すると、すべてがスムーズに進みます。
DBUnit がデータセットまたは dtd からテーブルを自動的に作成する方法はありますか?というフォローアップの質問を投稿しました。
java - DBUnitが自動的にテーブルを作成する方法はありますか?
DBUnitがそれ自体でテーブルを作成しないことに気づきました(NoSuchTableExceptionに直面せずにプレーンJDBCおよびHSQLDBを使用してDBUnitでテストするにはどうすればよいですか?を参照)。
DBUnitがデータセットまたはdtdからテーブルを自動的に作成する方法はありますか?
編集: HSQLDBのようなインメモリデータベースの簡単なテストでは、大まかなアプローチを使用してテーブルを自動的に作成できます。
java - dbUnit の問題: java.sql.SQLException: クローズド ステートメント
dbUnit に奇妙な問題があります。私は約 50 の単体テストを含むプロジェクトに dbUnit 2.4.4、Java 1.6、Spring (db 接続プールとして)、Oracle 9 を使用しています。それらのいくつかについては(一連のテスト全体を実行すると)、次のような例外が発生します。
importToDb メソッドは、dbUnit の DatabaseOperation.REFRESH.execute メソッドを介して XML ファイルからデータベースにテスト データをロードし、すべてのテストで使用されます。問題のあるこれらのテストを個別に実行しても、問題はありません。あなたはなにか考えはありますか?ありがとう!