Мне нужны тесты Spring для поведения приложения во время ошибки базы данных (соединение, вниз db ..). Есть ли способ выключить / убить или запустить бит памяти в режиме «Н2 в памяти» из тестов весеннего блока?
При выполнении тестов Junit с тестовой базой h2 экземпляр базы данных запускается, когда тестовый набор запускается и останавливается при выполнении тестов (при условии, что вы настроили базу данных с использованием bean-компонентов).
Если вы используете весеннюю загрузку, вы можете настроить тестовую базу данных h2 следующим образом:
src / test / resources / application-test.yml:
spring:
datasource:
driverClassName: org.h2.Driver
url: jdbc:h2:mem:testdb
username: sa
password:
И настроить ваш тест вроде:
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles(profiles = "test")
public class SignupControllerTest {
@Autowired
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
@Autowired
private RealityKeeperRepository myrepo;
Если вы используете регулярную пружину, вы можете настроить компонент DataSource с помощью аннотации @Profile("test"):
@Bean
@Profile("test")
public DataSource devDataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.HSQL)
.build();
}
и настроить ваши тесты например:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {AppConfig.class})
@ActiveProfiles(profiles = "test")
public class MyTest {
@Autowired
...
Класс AppConfig должен быть аннотирован с помощью @Configuration содержать компонент devDataSource, упомянутый выше.
Да, если у вас есть зависимость от H2 и у вас нет настроек для нее, то Spring boot начнет внедрять H2 для вас.
Эта статья должна быть полезной: http: //www.springboottutorial. ком / весна-загрузки и h2-в-памяти-базы данных