Тестирование весеннего загрузочного API с базой данных - PullRequest
1 голос
/ 13 января 2020

Я хочу автоматическое тестирование моего весеннего API. Теперь у меня около 7-8 интересных ситуаций и я делаю:

  1. развернуть в postgres 7 дБ (test1, 2, ....)
  2. application.properties write db test1 .
  3. запустить тест и go до 2.

Это сложно. Что является простым способом?

  1. Я хочу иметь один дБ для теста (очистить дб, только структура таблиц)
  2. перед тестовой записью в осветительных приборах дБ (специальный файл с данными, пример - пользователи , отчеты и прочее)
  3. запустить тест
  4. после теста удалить прибор и снова очистить db.

Можно ли сделать это к весне? Раньше я программировал на python / django и пользовался таким же образом.

1 Ответ

1 голос
/ 13 января 2020

Я думаю, что один из способов решить эту проблему - использовать файлы пользовательских свойств и классы @Configuration.

Для каждого теста вы создадите файл свойств, например, test1-dbA.properties * 1005. *

jdbc.driverClassName=org.h2.Driver
jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
jdbc.username=db1
jdbc.password=..

Далее вы должны определить bean-компонент DataSource, который загружает свойства из test1-dbA.properties

@Configuration
@EnableJpaRepositories(basePackages = "org.baeldung.repository")
@PropertySource("test1-dbA.properties")
@EnableTransactionManagement
public class DB1Config {
        @Autowired
    private Environment env;

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
        dataSource.setUrl(env.getProperty("jdbc.url"));
        dataSource.setUsername(env.getProperty("jdbc.user"));
        dataSource.setPassword(env.getProperty("jdbc.pass"));

        return dataSource;
    }
// ...
}

В тесте JUnit вы должны загрузить класс конфигурации :

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Application.class, DB1Config.class})
public class db1Test{
    // ...
}

Этот и другие варианты можно посмотреть здесь: https://www.baeldung.com/spring-testing-separate-data-source и https://www.baeldung.com/spring-jpa-test-in-memory-database

...