Взгляните на это: https://github.com/zonkyio/embedded-database-spring-test. Для ясности, он предназначен для интеграционного тестирования. Это означает, что контекст Spring инициализируется во время индивидуального теста.
Согласно документации по инструментам, все, что вам нужно сделать, это разместить аннотацию @AutoConfigureEmbeddedDatabase
над классом:
@RunWith(SpringRunner.class)
@AutoConfigureEmbeddedDatabase
@ContextConfiguration("/path/to/app-config.xml")
public class FlywayMigrationIntegrationTest {
@Test
@FlywayTest(locationsForMigrate = "test/db/migration")
public void testMethod() {
// method body...
}
}
и добавьте зависимость Maven:
<dependency>
<groupId>io.zonky.test</groupId>
<artifactId>embedded-database-spring-test</artifactId>
<version>1.1.0</version>
<scope>test</scope>
</dependency>
Чтобы использовать его вместе с @DataJpaTest
, вам необходимо отключить тестовую базу данных по умолчанию с помощью аннотации @AutoConfigureTestDatabase(replace = NONE)
:
@RunWith(SpringRunner.class)
@AutoConfigureTestDatabase(replace = NONE)
@AutoConfigureEmbeddedDatabase
@DataJpaTest
public class SpringDataJpaTest {
// class body...
}
Чтобы сделать использование более удобным, вы также можете создать составную аннотацию, например:
@Documented
@Inherited
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@AutoConfigureTestDatabase(replace = NONE)
@AutoConfigureEmbeddedDatabase
@DataJpaTest
public @interface PostgresDataJpaTest {
}
..а затем используйте его над своим тестовым классом:
@RunWith(SpringRunner.class)
@PostgresDataJpaTest // custom composite annotation
public class SpringDataJpaTest {
// class body...
}
person
Martin Volejnik
schedule
23.02.2018
@DataJpaTest
, можно было запускать без установки базы данных на локальном компьютере. - person SingleShot   schedule 26.02.2018