전에 @Sql을 실행하는 방법 : org.springframework.test.context.jdbc.Sql @Before의 I는 다음과 주석을 결합하기 위해 노력하고있어 방법
및 org.junit.Before 추적 코드처럼
:
@Test
@Sql(scripts = "dml-parametro.sql")
public void testData(){
Iterable<Parametro> parametros = parametroService.findAll();
List<Parametro> parametrosList = Lists.newArrayList(parametros);
Assert.assertThat(parametrosList.size(), Is.is(1));
}
@Before
public void beforeMethod() {
JdbcTestUtils.deleteFromTables(jdbcTemplate, "PARAMETRO");
}
@Before가 @Sql 주석에서 다음 스크립트 "DML-parametro.sql"다음에 실행되는 방법의 코드.
이 작업을 수행하는 것이 맞습니까?
해결책으로 @Before보다 @After를 사용하고 있지만 테스트 실행 전에 테이블을 삭제하려고합니다.
@SqlConfig를 사용하고 싶지 않습니다. 나는 테스트 수준에서 transacional 범위를 사용하지 않기 때문에 모든 테스트 방법에서 테이블을 정리해야합니다. 모든 테스트 메소드가 테이블을 정리해야하는 경우 @Before 메소드에서이 작업을 수행하려고합니다. @SqlConfig를 사용하여 모든 테스트 메소드에서이 작업을 수행하고 싶지 않습니다. @Before 이전에 @Sql의 동작이 잘못되었다고 생각합니다. 기본적으로
나는 일부 스크립트를 실행하는'@Sql'과'@Sql'로 주석이 첨부 된 서브 클래스를 주석 처리 한 추상 클래스를 가지고 있습니다. 내가 스프링 부트 1.2를 실행할 때 예상대로 모든 것이 작동했다 -> 추상 클래스 스크립트는 자식 클래스 scipt보다 먼저 실행되었다. 하지만 스프링 부트 1.3으로 업그레이드 한 후에는 자식 클래스'@ Sql'이 추상 부모 클래스의'@Sql'을 무시하기 시작 했으므로 부모 클래스 스크립트는 실행되지 않습니다. 나는 지금 무엇을 해야할지 모르겠다./ –
나는 이것에 대한 질문을 만들었으며, 여기에있다 : http://stackoverflow.com/questions/39296329/sub-classing-sql-annotated-class –