Aufbauend auf Alfredos Antwort ist dies eine Möglichkeit, Datenbankinformationen einzufügen, ohne das Standardskript der eingebetteten Datenbank aufzurufen. Dies kann beispielsweise nützlich sein, wenn Sie die DDL automatisch für Sie erstellen möchten - zumindest in Tests.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"/applicationContext.xml"})
public class TestClass {
@Autowired
private ApplicationContext ctx;
private JdbcTemplate template;
@Autowired
public void setDataSource(DataSource dataSource) {
template = new JdbcTemplate(dataSource);
}
private static boolean isInitialized = false;
@Before
public void runOnce() {
if (isInitialized) return;
System.out.println("Initializing database");
String script = "classpath:script.sql";
Resource resource = ctx.getResource(script);
JdbcTestUtils.executeSqlScript(template, resource, true);
isInitialized = true;
}
}
Auf diese Weise wird runOnce()
Methode wird nur einmal für den Testlauf aufgerufen. Wenn Sie isInitialized
machen B. ein Instanzfeld (nicht statisch), wird die Methode vor jedem Test aufgerufen. Auf diese Weise können Sie die Tabellen bei Bedarf vor jedem Testlauf löschen/neu füllen.
Beachten Sie, dass dies immer noch eine ziemlich schnelle Lösung ist und die vernünftige Art und Weise, mit der Datenbank umzugehen, mit Ralphs Antwort übereinstimmt.