Ich versuche, die folgen Anmerkungen ausführen zu kombinieren:Wie @sql vor einem @Before Methode
org.springframework.test.context.jdbc.Sql und org.junit.Before
Wie der Folgecode:
@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");
}
der Code in der Methode @Before nach dann dem Skript "DML-parametro.sql" in der @sql Anmerkung läuft.
Ist es richtig, dies zu tun?
Für Lösung dies, ich benutze @ After nach Ort als @Before, aber ich möchte Tabellen vor der Testausführung, nicht nach.
Ich möchte nicht @SqlConfig verwenden. Ich benutze keinen transacionalen Bereich auf Testniveau, also muss ich meine Tabellen in jeder Testmethode reinigen. Wenn jede Testmethode Tabellen bereinigen muss, möchte ich dies in @Before Methode tun. Ich möchte das nicht bei jeder Testmethode mit @SqlConfig machen. Ich denke, dass das Verhalten von @Sql vor dem Ausführen von @Before falsch ist.
Ich habe eine abstrakte Klasse mit '@ Sql' annotiert, die einige Skripte ausführt, und eine Unterklasse, die ebenfalls mit '@ Sql' versehen ist. Als ich Springboot 1.2 ausführte, funktionierte alles wie erwartet -> abstrakte Klassenskripte wurden vor Kindklassen-Skripten ausgeführt. Aber sobald ich auf Spring Boot 1.3 aktualisiert habe, begann die Kind-Klasse '@ Sql' die abstrakte '@ Sql'-Klasse der übergeordneten Klasse zu überschreiben und somit werden Parent-Class-Skripte niemals ausgeführt. Ich weiß nicht, was ich jetzt tun soll:/ –
Ich habe eine Frage dafür erstellt, hier gefunden: http://stackoverflow.com/questions/39296329/sub-classing-sql-annotated-class –