У нас есть приложение, которое использует Spring Boot 2.0. Мы находимся в процессе переноса его в JDK11 из JDK8. Это также позволило нам обновить Spring Boot с 2.0 до 2.1. После прочтения журнала изменений выяснилось, что нам нужны были какие-то серьезные изменения.
Теперь проблема заключается в том, что некоторые тестовые классы отмечены как @SpringBootTest
и @DataJpaTest
. Согласно this , а также документации, мы не должны использовать оба вместе, и вместо этого мы изменили @DataJpaTest
на @AutoConfigureTestDatabase
. Вот как выглядит код:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {A.class, B.class}, properties = {
"x=xxx",
"y=yyy"
})
@AutoConfigureTestDatabase // Used to be @DataJpaTest
@EnableJpaRepositories("com.test")
@EntityScan("com.test")
public class Test {
@TestConfiguration
public static class TestConfig {
// Some beans returning
}
// Tests
}
Теперь мы получаем следующую ошибку:
NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
Итак, согласно этому ответу , мы сделали что-то вроде этого:
@EnableJpaRepositories(basePackages="com.test", entityManagerFactoryRef="entityManagerFactory")
Даже после этого мы все равно получаем ту же ошибку. Это правильный способ удалить @DataJpaTest
? Или нам нужно удалить @SpringBootTest
и сделать что-то еще? Любое руководство очень ценится.