0

私は単体テストにHSQLDBを使用しています.1つのAbstractクラスMyAbstractTestBaseをすべて拡張するTestクラスがたくさんあります。

class abstract MyAbstractTestBase 
{
   static
   {
      setUpDBTables();
   }

   public static void setUpDBTables()
   {
        context = new ClassPathXmlApplicationContext(new String[]{
            "file:spring-configuration/unit-testing-config.xml"
        });
        //InputStream inputStream = getClass().getClassLoader().getResourceAsStream("db/MY_TABLE.sql");
        DataSource dataSource = (DataSource)context.getBean("MyDataSource");

        namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);

   }
}

このアプローチの主な問題は、Spring によって作成された entityManager です。

@PersistenceContext(unitName = MyConstants.ENTITY_MANAGER_FACTORY_UNIT_NAME)
protected EntityManager entityManager;

データを保持せず、例外もスローされませんが、「選択」を使用してデータを読み取ろうとすると機能します。

これが私の質問です。単体テストを開始する前にテーブルを作成するにはどうすればよいですか? 私のentityManagerが期待どおりに動作するように。

また、例外がスローされなかったにもかかわらず、entityManager がレコードを保持しなかったのはなぜですか。

4

1 に答える 1

1

春のテストを使用している場合は、この回答のアプローチを使用することを強くお勧めします:春のテストでケースごとに DBUnit テストデータを一度ロードする方法

于 2013-06-30T00:41:44.760 に答える