próbuję łączyć adnotacje następująco:Jak wykonać @Sql przed metody @Before
org.springframework.test.context.jdbc.Sql i org.junit.Before
Podobnie jak kod obserwacji:
@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");
}
Kod w metodzie @Before jest uruchomiony po wtedy skrypt „DML-parametro.sql” w adnotacji @Sql.
Czy to słuszne?
Dla rozwiązania tego używam @After w miejscu niż @ Begore, ale chciałbym cdelete tabele przed wykonaniem testu, nie po.
Nie chciałbym używać @SqlConfig. Nie używam zasięgu transacional na poziomie testowym, więc muszę wyczyścić moje tabele w każdej metodzie testu. Jeśli każda metoda testowa wymaga czyszczenia tabel, chciałbym to zrobić w metodzie @Before. Nie chciałbym tego robić w każdej metodzie testu z @SqlConfig. Myślę, że zachowanie @Sql do wykonania przed @ Before jest złe.
Mam klasę abstrakcyjną opatrzoną adnotacją '@ Sql', która uruchamia niektóre skrypty i jej podklasę, która również jest opatrzona adnotacją' @ Sql'. kiedy uruchomiłem wiosenny boot 1.2 wszystko działało zgodnie z oczekiwaniami -> skrypty klasy abstrakcyjnej były uruchamiane przed sciptami klasy potomnej. ale po uaktualnieniu do wersji rozruchowej 1.3, klasa potomna '@ Sql' zaczęła nadpisywać' @ Sql' klasy abstrakcyjnej klasy nadrzędnej i tym samym skrypty klasy nadrzędnej nigdy się nie uruchamiają. Nie wiem, co teraz zrobić:/ –
Stworzyłem pytanie do tego, znalezione tutaj: http://stackoverflow.com/questions/39296329/sub-classing-sql-annotated-class –