JPA またはエンティティ Bean を使用してテスト データを生成するために使用できるツールまたはライブラリはありますか? これは、テストの開始時に動的に生成されたデータを含むメモリ内データベースを使用できる単体テストに非常に役立つと思います。したがって、実際の DB サーバーとの通信はなく、時間の無駄もありません。
JPAMockしか見つかりませんでした。しかし、それはまだ開発中です。誰かが良いポインタを提供できればうれしいです。
どうもありがとう。
JPA またはエンティティ Bean を使用してテスト データを生成するために使用できるツールまたはライブラリはありますか? これは、テストの開始時に動的に生成されたデータを含むメモリ内データベースを使用できる単体テストに非常に役立つと思います。したがって、実際の DB サーバーとの通信はなく、時間の無駄もありません。
JPAMockしか見つかりませんでした。しかし、それはまだ開発中です。誰かが良いポインタを提供できればうれしいです。
どうもありがとう。
ランダム データを生成するように設計されたフレームワークである Random-JPA を試すことができます。セットアップは最小限です。
私はそれを開発し、製品テストで 1 年以上使用しています。それは完全にうまく機能します。現在、Oracle、MySQL、および MSSQL をフル機能でサポートしています。
コード: https://github.com/kuros/random-jpa
チュートリアル: https://kuros.in/random-jpa
Quickcheck の実装の 1 つを使用できます。クイックチェックのアプローチは、JPA/Hibernate から独立しています。Quickcheck に基づいてドメイン オブジェクト インスタンスを生成し、それらを永続化するか、永続化レイヤーをモックします。
DBUnitを H2 データベースおよび untils & Spring と組み合わせて使用します。うまく機能します:
@SpringApplicationContext({ "classpath:test-context-dbunit.xml" })
@Transactional(TransactionMode.ROLLBACK)
@DataSet
public class ApplicationDaoTest extends UnitilsTestNG {
@SpringBeanByType
private ApplicationDao applicationDao;
@Test
public void findAll() throws Exception {
List<Application> actual = applicationDao.findAll();
assertNotNull(actual);
assertEquals(actual.size(), 3);
}
}
データは XML ファイルに設定されます。
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<APPLICATION APPLICATION_ID="1" name="APP3" enabled="1" application_type="TRADE" api_key="AK1" auto_create_topics="1" />
<APPLICATION APPLICATION_ID="2" name="APP1" enabled="1" application_type="TRADE" api_key="AK2" auto_create_topics="1" />
<APPLICATION APPLICATION_ID="3" name="APP2" enabled="0" application_type="TRADE" api_key="AK3" auto_create_topics="1" />
</dataset>
Spring テスト コンテキストでは、データソースを次のように定義します。
<bean id="dataSource" class="org.unitils.database.UnitilsDataSourceFactoryBean"/>
あなたが使用する方言として:org.hibernate.dialect.H2Dialect
最後に、クラスパスの unitils.properties を次のようにします。
database.driverClassName=org.h2.Driver
database.url=jdbc:h2:mem:test
database.user=sa
database.password=
database.schemaNames=public
database.dialect=hsqldb
アップデート
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="..."/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create-drop</prop>
</props>
</property>
</bean>