У меня есть приложение Spring загрузки с конфигурацией:Использование Spring JpaRepository в тесте
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled=true, prePostEnabled=true)
@EnableJpaRepositories(basePackages = "com.site.data.repository")
@EntityScan(basePackages = "com.site.data.entity")
@ComponentScan(basePackages = "com.*")
@SpringBootApplication
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
И в resources
папке есть application.properties файл:
spring.datasource.url=...
spring.datasource.username=...
spring.datasource.password=...
spring.datasource.driverClassName=...
#...
Проблема:
I попробуйте сделать новый класс, который добавит некоторые записи в базу данных. Я думал, что лучшим решением является класс тестирования JUnit. Поэтому, если кто-то хочет подать мою базу данных, он может просто запустить этот конкретный тест:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = WebSecurityConfig.class)
public class DataFeeder {
@Autowired
MyRepository myRepository;
@Test
public void feedDB() {
MyEntity entity = new MyEntity();
myRepository.saveAndFlush(entity);
}
}
Но эта конфигурация не работает. Конечно, все репозитории отлично работают в проекте. Но во время выполнения теста я получаю сообщения о том, что все таблицы не существуют. Например, для SOME_TABLE:
Table "SOME_TABLE" not found; SQL statement:
Я видел много учебников о том, как проверить JpaRepository, но я не хочу сделать тест, добавить некоторые элементы и удалить его после испытательного конца. Я просто хочу сохранить некоторые данные в базе данных (но в функции @Test)
Что не так с моей конфигурацией?
Попробуйте использовать '@ SpringApplicationConfiguration' вместо' @ ContextConfiguration' – Jens
@Jens К сожалению, это не меняет ситуацию. Я меняю уровень журнала, и первое сообщение: 'hibernate.properties not found'. Поэтому я подозреваю, что Spring не видит application.properties в этом тестовом классе. EDIT: нет hibernate.properites довольно хорошо, потому что при обычном запуске приложения это тоже происходит. – jsosnowski
@Jens Прошу прощения. Ты прав. Ваше предложение верное. Когда я изменяю (правильно) на '@ WebIntegrationTest', все работает нормально. Если вы хотите, ответьте, и я приму это. – jsosnowski