実際にSeleniumテストケースを実行するとき。Glassfish で構成されているライブ (メイン データベース) データベースを使用します。テスト目的でレコードを追加すると、メイン データベースにレプリケートされます。これはよく知られていません。したがって、Selenium テスト ケース用に別のデータベースを用意する方法はありますか。
2 に答える
Glassfishの場合:
JDBC接続プールリソースを定義して、本番サーバーと開発サーバーの異なるデータベースを参照します。
2つの異なるサーバーを実行していない場合、最初のステップはそれを修正し、異なるサーバーを実行することです。そして、さまざまなデータベースサーバー。開発マシン/サーバーを本番データ、さらには本番データベースサーバーに向けないでください。
展開時に実行する必要がある単体テストを実行しようとしている場合は、単体テスト プログラムで 2 つ目の接続を作成する必要があります。
これにはメモリ内データベースを使用することをお勧めします。Java SDK にバンドルされている HSQL を使用すると、ドライバーをインストールする必要がなくなり、テストの実行後に何もクリーンアップする必要もなくなります。
2番目の接続を作成する方法は、使用しているものによって異なります。うまくいけば、次のようなデータベース接続を取得するための中心的なクラスまたはメソッドがあるでしょう。
Connection c = MyConnectionClass.getConnection();
getConnection メソッドを簡単に変更できるので、次のようにして、テストの HSQL 直接接続を指摘できます。
public Connection getConnection(){
if(testing){
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:mymemdb", "SA", "");
}else{
//get your connection from your pool or whatever you are doing right now
}
}
または、より正確にこのクラスのモックを作成することもできます。しかし、セレンがすぐにこれをサポートしているかどうかはわかりません。
もちろん、テストを開始する前に、データベース スキーマをメモリ内データベースに作成する必要があります。たとえば、休止状態または JPA を使用する場合、それは単純なはずです (この場合は、2 つ目の永続ユニットを追加してそれを使用するようにしてください)。それらを任意のデータベースで実行します。
また、テストを実行するたびにスクリプトを実行したくない場合は、ファイル モードで hsql を使用します (jdbc:hsqldb:mem を jdbc:hsqldb:file に変更すると、ファイルを使用してデータベースが保存されます)。
詳細を知りたい場合は、hsql データベースに関する情報を以下に示します:リンク
また、hsqlが気に入らない場合は、 sqlite(ファイルモードのみ)を試すことができます。これには、アクセスするためのツールが他にもあると思います