5

JPA またはエンティティ Bean を使用してテスト データを生成するために使用できるツールまたはライブラリはありますか? これは、テストの開始時に動的に生成されたデータを含むメモリ内データベースを使用できる単体テストに非常に役立つと思います。したがって、実際の DB サーバーとの通信はなく、時間の無駄もありません。

JPAMockしか見つかりませんでした。しかし、それはまだ開発中です。誰かが良いポインタを提供できればうれしいです。

どうもありがとう。

4

3 に答える 3

3

ランダム データを生成するように設計されたフレームワークである Random-JPA を試すことができます。セットアップは最小限です。

私はそれを開発し、製品テストで 1 年以上使用しています。それは完全にうまく機能します。現在、Oracle、MySQL、および MSSQL をフル機能でサポートしています。

コード: https://github.com/kuros/random-jpa

チュートリアル: https://kuros.in/random-jpa

于 2016-05-27T20:01:10.240 に答える
2

Quickcheck の実装の 1 つを使用できます。クイックチェックのアプローチは、JPA/Hibernate から独立しています。Quickcheck に基づいてドメイン オブジェクト インスタンスを生成し、それらを永続化するか、永続化レイヤーをモックします。

于 2011-11-08T12:15:49.517 に答える
1

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>
于 2011-10-31T13:40:17.527 に答える