Berdasarkan jawaban Alfredos, ini adalah cara untuk memasukkan informasi basis data tanpa memanggil skrip default basis data yang disematkan. Misalnya, ini mungkin berguna ketika Anda ingin membuat DDL secara otomatis untuk Anda - setidaknya dalam pengujian.
@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;
}
}
Dengan cara ini, runOnce()
metode ini dipanggil sekali dan hanya sekali untuk uji coba. Jika Anda membuat isInitialized
bidang instance (non-statis), metode ini akan dipanggil sebelum setiap pengujian. Dengan cara ini Anda dapat menghapus/mengisi ulang tabel, jika perlu, sebelum setiap pengujian dijalankan.
Perhatikan bahwa ini masih merupakan solusi yang agak cepat dan kotor dan cara yang masuk akal untuk menangani database sesuai dengan jawaban Ralph.