是否有任何工具或庫可用於使用JPA或實體bean生成測試數據?我相信這對於單元測試非常有幫助,我們可以在內存數據庫中使用動態生成的數據,並在我們開始測試時進行動態生成。因此,將不會與實際的數據庫服務器進行通信,也不會浪費時間。我只能找到JPAMock。但它仍在發展中。如果有人能提供一個好的指針,那將會很好。用於JPA或休眠的測試數據生成器
非常感謝。
是否有任何工具或庫可用於使用JPA或實體bean生成測試數據?我相信這對於單元測試非常有幫助,我們可以在內存數據庫中使用動態生成的數據,並在我們開始測試時進行動態生成。因此,將不會與實際的數據庫服務器進行通信,也不會浪費時間。我只能找到JPAMock。但它仍在發展中。如果有人能提供一個好的指針,那將會很好。用於JPA或休眠的測試數據生成器
非常感謝。
我使用DBUnit與H2數據庫結合使用,直到& 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
UPDATE
<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>
您可以使用Quickcheck implementations之一。 quickcheck方法獨立於JPA/Hibernate。您可以基於Quickcheck生成域對象實例,並保留它們或模擬持久層。
您可以試用Random-JPA,這是一個設計用於生成隨機數據的框架。該設置是最小的。
我開發了它,並在我們的生產測試中使用了一年多。它工作得很好。雖然它目前支持Oracle,MySQL & MSSQL具有完整功能。