2009-07-27 8 views
0

まず、このすべてをお読みいただきありがとうございます。 私はテストクラスを実行して、削除や更新、削除などのテストを実行できるようになるたびにデータベース(derby)にデータを取り込みたいと思っています。私はhibernate.cfg.xmlファイル内休止状態の駆動テスト用の初期データを作成

<property name="hibernate.hbm2ddl.auto">create</property> 

を使用 ので、私は、データベースが最初にドロップすることを期待して、私はテストを実行するたびに作成されています。 私はクラスコンストラクタまたはセットアップメソッドを使用しましたが、すぐにクラス内にテストメソッドがあることを認識しました(私は前テストを想定し、残りは同じように動作します)。 私の質問は、どのように初期データを設定するのですか? 読んでいただきありがとうございます。

答えて

1

仮定JUnitの4:

前:前に、実際のテストケースメソッド(複数可)を実行した後にコードの実行をトリガするために使用することができる注釈の2つのグループがあります

このマーカーで注釈を付けられたメソッドは、 の前にJUnitフレームワークによって実行され、次のテストケースメソッドを呼び出します。 実際のテストケースメソッドが実行された後に、このマーカーで注釈

後、方法は、JUnitのにより実行されます。

BeforeClass( JUnitのは、最初のテストケースを実行する前に)この注釈が付い

方法は一度だけ実行されます。あなたの投稿を正しく読んだら、この はあなたが実際に望むオプションです。 (JUnitのは 最後のテストケースを実行した後に)この注釈でタグ付けされた

AfterClass

方法は一度だけ実行されます。

import org.junit.Before; 
import org.junit.BeforeClass; 
import org.junit.Test; 

public class SomeTest { 

    @Test 
    public void test1() { 
     System.out.println("test1"); 
    } 

    @Test 
    public void test2() { 
     System.out.println("test2"); 
    } 

    @Before 
    public void setUp() { 

     // Here goes the code, which makes sure, all tests 
     // see the same context 

     System.out.println("setUp"); 
    } 

    @BeforeClass 
    public static void setUpGlobals() { 

     // Expensive hibernate set-up will go here. It is 
     // called only once 

     System.out.println("setUpGlobals"); 
    } 
} 

出力を生成

  • setUpGlobalsう
  • のsetUp
  • TEST1
  • のsetUp
  • TEST2
+0

ありがとうございます。ありがとうございました。 –

3

DbUnitを見てください。これは、DBベースのアプリケーションテストを容易にするためのJUnit拡張です。その特徴の1つは、テストの開始時にデータベースを生成する事前定義されたデータセットを持つことです。詳細はこちら - http://www.dbunit.org/components.html#dataset

0

最初のデータ設定(Dirkで記述された注釈を使用)では、2つの異なる方法を使用しました。 ddlスクリプトを含むプロセス全体を本当にテストしたい場合は、OSプロセスを実行し、適切なコマンドを実行してそのデータベースタイプを削除して作成することによって、BeforeClassにデータベースを完全に再作成させます。しかし、ほとんどの場合、HibernateまたはSQLの削除を使用して各テスト(またはクラス)の最初と最後でテーブルをクリアします。これはddl作成部分をテストしませんが、Hibernateの設定やその他のテストでは、データベーススキーマが間違っているかどうかが示されます。

+0

こんにちは!回答に感謝し、それに基づいて、私は間違いが何であるかを認識したと思います。テストするメソッドの残りのデータはありません。BeforeClassが何かを挿入しているかわかりません。 testmethod内の初期データをデバッグしてください(前のクラスからデバッグできないため)。hbm2ddlを作成するように設定されている間は、データが挿入されていることがわかります。どのようにこれらの仕事work.iを取得するコメント内にも私のコードを投稿することはできません任意の提案? –

+0

今私は何かを得る!私はhbm2ddlを作成するように設定しました。私は実際に何も保存せずに私の保存メソッドを成功させるために偽のアサーションを行いました。データベースにBeforeClassを挿入したものを見ることができましたが、それを予感させる方法は?私はそれに追加したいです。 –