Sto cercando di coniugare le annotazioni di seguire:Come eseguire @sql prima di un metodo @Before
org.springframework.test.context.jdbc.Sql e org.junit.Before
Come il codice seguente:
@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");
}
il codice nel metodo @Before è in funzione dopo lo script "DML-parametro.sql" nel l'annotazione @sql.
È giusto fare questo?
Per la soluzione, sto utilizzando @After al posto di @Before, ma vorrei eliminare le tabelle prima dell'esecuzione del test, non dopo.
Non vorrei usare @SqlConfig. Non utilizzo lo scope transazionale a livello di test, quindi ho bisogno di pulire i miei tavoli in ogni metodo di prova. Se ogni metodo di test ha bisogno di pulire le tabelle, vorrei farlo nel metodo @Before. Non vorrei farlo in ogni metodo di prova con @SqlConfig. Penso che il comportamento di @Sql da eseguire prima di @Before sia sbagliato.
Ho una classe astratta annotata con '@ Sql' che esegue alcuni script e una sottoclasse di essa che è anche annotata con' @ Sql'. quando stavo eseguendo il boot di primavera 1.2, tutto funzionava come previsto -> gli script di classe astratti venivano eseguiti prima degli scolari di classe. ma una volta che ho aggiornato a spring boot 1.3, la classe figlio '@ Sql' ha iniziato a scavalcare la classe genitore astratta' @ Sql' e quindi gli script della classe genitore non vengono mai eseguiti. Non so cosa fare ora:/ –
Ho creato una domanda per questo, trovata qui: http://stackoverflow.com/questions/39296329/sub-classing-sql-annotated-class –