Весенний тест DBUnit H2Connection отказался
Я хотел бы создать интеграционный тест для своего проекта, и я новичок в Spring Test DB Unit. К сожалению, после запуска теста я сталкиваюсь с ошибкой, приведенной ниже:
Ошибка: соединение отказано: подключить локальный хост
Я также добавил файл класса базовых тестовых конфигураций, в котором указаны конфигурации и способы подключения к базе данных H2.
//import classes
@Configuration
@ComponentScan( {"com.projects.person", "com.projects.commons"} )
@EnableWebMvc
@EnableTransactionManagement
@PropertySource( "classpath:application.properties" )
public class BaseTestConfig extends WebMvcConfigurerAdapter
{
@Autowired
private Environment env;
@Autowired
private OperatingSystem operatingSystem;
@Autowired
private PropertiesFactory propertiesFactory;
@Bean
public UrlBasedViewResolver setupViewResolver()
{
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
resolver.setPrefix( "/WEB-INF/pages/" );
resolver.setSuffix( ".jsp" );
resolver.setViewClass( JstlView.class );
return resolver;
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan( "com.projects.person.model.db" );
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource dataSource() {
String databaseUrl = "jdbc:h2:tcp://localhost/persondb";
if( operatingSystem.isWindows() )
{
databaseUrl = "jdbc:h2:tcp://localhost/~/persondb";
}
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.h2.Driver");
dataSource.setUrl( databaseUrl );
dataSource.setUsername("sa");
dataSource.setPassword("");
return dataSource;
}
@Bean
public H2Connection dbUnitConnection() throws SQLException, DatabaseUnitException {
return new H2Connection(dataSource().getConnection(), "Person");
}
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
properties.put("hibernate.show_sql", "false");
return properties;
}
@Bean
public HibernateTransactionManager transactionManager(SessionFactory s) {
HibernateTransactionManager transactionManager = propertiesFactory.createTransactionManagerProperty();
transactionManager.setSessionFactory(sessionFactory().getObject());
return transactionManager;
}
}
1 ответ
В соединении отказано, потому что databaseUrl
вы указываете требует сервер, который уже работает и прослушивает порт TCP на localhost
,
Итак, у вас есть два варианта.
- Убедитесь, что у вас есть такая база данных H2, работающая на
localhost
, - Вместо этого используйте встроенную базу данных H2, как в следующем примере.
- Дополнительную информацию можно найти в разделе поддержки встроенной базы данных справочного руководства Spring.
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.generateUniqueName(true)
.setType(H2)
.build();
}