#java #mysql #spring #database #spring-boot
#Ява #mysql #весна #База данных #пружинный ботинок
Вопрос:
у меня возникает эта проблема, когда я использую тестирование с spring, мой проект отлично работает с базой данных, но когда я использую его с тестом, я получаю эту ошибку
вот мой код:
@RunWith(SpringRunner.class) @DataJpaTest @AutoConfigureMockMvc @AutoConfigureTestDatabase @ActiveProfiles("test") @Transactional @DataJpaTest class EstatesystemApplicationTests { @Autowired private EstateRepository estateRepository; @MockBean private EstateService estateService; @Autowired private MockMvc mvc; @Autowired private EstateService estateService1; @MockBean private ParameterService parameterService; @Autowired private JwtUserDetailsService userService; @Autowired private WebApplicationContext webApplicationContext; @Autowired private JwtTokenUtil tokenUtil; private String token = ""; @Before public void setup() { mvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); UserDto user = new UserDto("username", "password"); userService.save(user); token = tokenUtil.generateToken(userService.loadUserByUsername("username")); assertNotNull(token); Parameters parameters = new Parameters("sharesNum", 5d); Double m = parameterService.GetSharesNum(parameters.getKey()); Mockito.when(m).thenReturn(parameters.getValue()); Parameters parameters1 = new Parameters("Ratio", 0.25); Mockito.when(parameterService.GetSalePrice(parameters1.getKey())).thenReturn(parameters1.getValue()); } @Test public void createEstate() { Estates estates = new Estates(10, "estate20", 200.0, 0.25, 5.0, new Date(), "ss", false); estateRepository.save(new Estates(10, "estate20", 200.0, 0.25, 5.0, new Date(), "ss", false)); } }
Библиотеки Hibernate: создать таблицу усадьбы (целочисленный идентификатор не равно null, created_by тип varchar(255), created_date DateTime и last_modified_by тип varchar(255), last_modified_date типа datetime, buyer_name тип varchar(255), наименование типа данных varchar(255), цена двойная точность, sale_price двойной точности, sale_time типа datetime, shares_num двойной точности, продали немного, первичный ключ (идентификатор)) двигатель=InnoDB в 2021-12-09 13:09:13.197 ПРЕДУПРЕЖДЕНИЕ 11016 — [ main] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget обнаружена команда принятия исключений : Ошибка при выполнении DDL «создать таблицу состояний (целое число не равно нулю, created_by varchar(255), дата и время создания, дата и время последнего изменения, дата и время последнего изменения, имя покупателя(255), имя varchar(255), цена с двойной точностью, двойная точность sale_price, дата и время продажи, двойная точность share_num, проданный бит, первичный ключ(идентификатор)) движок=InnoDB» через оператор JDBC
org.hibernate.tool.schema.spi.CommandAcceptanceException: Ошибка при выполнении DDL «создать таблицу состояний (целое число идентификатора не равно нулю, created_by varchar(255), дата-время создания, дата-время last_modified_by(255), дата-время last_modified_date, имя покупателя varchar(255), имя varchar(255), цена с двойной точностью, цена с двойной точностью, дата-время продажи, номер акции с двойной точностью, проданный бит, основной ключ (идентификатор)) движок=InnoDB» с помощью инструкции JDBC по адресу org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[спящий режим-ядро-5.4.32.Финал.jar:5.4.32.Финал]
Комментарии:
1. Можете ли вы дать полную информацию о стеке? На скриншоте, который вы прикрепили, не отображается необходимая информация.
2. @whoami здесь правка
3. Для
spring.jpa.hibernate.ddl-auto
свойства, можете ли вы установитьcreate-drop
, как вы выполняете тест? Как правило, для модульного тестирования мы можем использоватьcreate-drop
, для разработки мы можем использоватьupdate
, а для продукта мы можем использоватьnone
.4. @whoami все та же ошибка