maven 통합 테스트 단계에서 임베디드 부두 컨테이너에서 시작된 REST 웹 서비스 프로세스에 대해 통합 테스트를 실행하려고합니다. 그만큼 효과가 있습니다.통합 테스트 방법 내장 된 Jetty 컨테이너에서 실행되는 인 메모리 DB에서 HSQL 데이터를 setUp() 조작합니까?
메모리 내 HSQL DB를 사용하도록 서버를 구성하여 각 JUnit 테스트가 데이터베이스를 설정하고 (테이블 생성, 레코드 삽입), 기록을 삭제할 수 있습니다 (레코드 삭제). 임베디드 부두 컨테이너에 의존하지 않았다 (단위 테스트를 실행할 때 실행되는
jdbc.driver.class.name=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:mem:mytestdb
db.user=sa
db.pass=
:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="#{applicationProperties['jdbc.driver.class.name']}" />
<property name="url" value="#{applicationProperties['jdbc.url']}" />
<property name="username" value="#{applicationProperties['db.user']}" />
<property name="password" value="#{applicationProperties['db.pass']}" />
</bean>
속성 :
웹 서비스 프로세스의 애플리케이션 컨텍스트는 다음과 같은 데이터 소스를 정의),이 설정은 정상적으로 작동했습니다. 이 내 서버가 부두에서 시작될 때 생성되는 데이터 소스 내 단위로 액세스 할 수 없습니다 -apparently 때문에 작동하지 않습니다, 내 통합 테스트와
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
public class TestBase {
@Autowired
protected ApplicationContext context;
...
@Before
public void setUp() {
DriverManagerDataSource ds = (DriverManagerDataSource) context.getBean("dataSource");
// Create tables
// Insert records
}
}
: 각 단위 테스트는 데이터베이스를 생성하고, 그래서 같은 기록을 삽입 테스트 클래스는 데이터를 삽입/삭제합니다.
내 질문 : 내 단위 테스트 설정() 메서드는 데이터를 조작 할 수 있습니다
- 어떻게 HSQL 내 포함 된 부두 컨테이너에서 구성 할 수있는 그래서?