Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да попълним база данни само веднъж преди @Test методи в пролетния тест?

Въз основа на отговора на Alfredos, това е начин за инжектиране на информация в базата данни, без да се извиква скрипта по подразбиране на вградената база данни. Например, това може да е полезно, когато искате автоматично да изградите DDL вместо вас - поне в тестове.

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

По този начин runOnce() методът се извиква веднъж и само веднъж за тестовото изпълнение. Ако направите isInitialized поле на екземпляра (нестатично), методът ще бъде извикан преди всеки тест. По този начин можете да пуснете/попълвате отново таблиците, ако е необходимо, преди всяко тестово изпълнение.

Имайте предвид, че това все още е доста бързо и мръсно решение и разумният начин за работа с базата данни е в съответствие с отговора на Ралф.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql cursors.execute() само с един параметър:Защо низът е нарязан в списък?

  2. MySQL ИЗГЛЕЖДАНЕ

  3. Зареждане на класа com.mysql.jdbc.Driver ... е отхвърлено съобщение

  4. Как да съпоставим записи, които са свързани с определен набор от други записи?

  5. Изберете от падащото меню и презаредете страницата