2

JPA 또는 엔티티 bean을 사용하여 테스트 데이터를 생성하는 데 사용할 수있는 도구 또는 라이브러리가 있습니까? 저는 이것이 우리가 테스트를 시작할 때 동적으로 생성 된 데이터로 메모리 데이터베이스를 가질 수있는 단위 테스트에 매우 유용 할 것이라고 믿습니다. 따라서 실제 DB 서버와의 통신은 없으며 시간 낭비가 없습니다.JPA 또는 최대 절전 모드 용 테스트 데이터 생성기

나는 JPAMock만을 찾을 수있었습니다. 그러나 아직 개발 중에 있습니다. 좋은 포인터를 제공 할 수 있다면 좋을 것입니다.

고마워요.

답변

2

H2 데이터베이스와 & 봄과 함께 DBUnit을 사용합니다. 잘 작동 :

@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 파일에 설정됩니다 Spring 테스트 맥락에서

<?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> 

당신 같은 당신의 데이터 소스를 정의 방언으로

<bean id="dataSource" class="org.unitils.database.UnitilsDataSourceFactoryBean"/> 

은 사용 : org.hibernate.dialect.H2Dialect

마지막으로 클래스 경로의 unitils.properties는

0입니다.
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> 
1

당신은 Quickcheck implementations 중 하나를 사용할 수 있습니다. 빠른 점검 접근법은 JPA/Hibernate와는 독립적입니다. Quickcheck를 기반으로 도메인 객체 인스턴스를 생성하고 지속성 레이어를 유지하거나 모의합니다.

2

무작위 데이터를 생성하도록 설계된 프레임 워크 인 Random-JPA를 사용해 볼 수 있습니다. 설정은 최소한입니다.

나는 이것을 개발하여 우리의 생산 테스트에서 1 년 넘게 사용 해왔다. 완벽하게 잘 작동합니다. 현재 Oracle을 지원하지만, 전체 기능을 갖춘 & MSSQL.

https://github.com/kuros/random-jpa