Sobre la base de la respuesta de Alfredo, esta es una forma de inyectar información de la base de datos sin llamar al script predeterminado de la base de datos integrada. Por ejemplo, esto puede ser útil cuando desea crear automáticamente el DDL para usted, al menos en las pruebas.
@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;
}
}
De esta forma, el runOnce()
El método se llama una vez y solo una vez para la ejecución de la prueba. Si haces isInitialized
un campo de instancia (no estático), el método se llamará antes de cada prueba. De esta manera, puede descartar/rellenar las tablas, si es necesario, antes de cada ejecución de prueba.
Tenga en cuenta que esta sigue siendo una solución bastante rápida y sucia y la forma sensata de manejar la base de datos está de acuerdo con la respuesta de Ralph.