sql >> Databáze >  >> RDS >> Mysql

Jak naplnit databázi pouze jednou před metodami @Test v jarním testu?

Na základě odpovědi Alfredos je to způsob, jak vložit databázové informace bez volání výchozího skriptu vestavěné databáze. Například to může být užitečné, když chcete automaticky vytvořit DDL pro vás - alespoň v testech.

@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;
    }
}

Tímto způsobem runOnce() metoda je volána jednou a pouze jednou pro testovací běh. Pokud provedete isInitialized pole instance (nestatické), metoda bude volána před každým testem. Tímto způsobem můžete před každým testovacím spuštěním v případě potřeby zrušit/znovu naplnit tabulky.

Všimněte si, že toto je stále poměrně rychlé a špinavé řešení a rozumný způsob zacházení s databází je v souladu s Ralphovou odpovědí.



  1. Jak určit kartu v postgresové front-end COPY

  2. Další bílá kniha 12c Optimizer

  3. Existuje v MySQL způsob, jak implicitně vytvořit primární klíč pro tabulku?

  4. Jak změnit mysql na mysqli?