Судя по фрагменту кода, который вы предоставили, в настоящее время вы выполняете интеграционный тест, который подключается к реальной базе данных (не видя вашего файла pom / gradle.build, я не могу сказать, какой именно, но я предположу, что H2).
Если я сохраню accountRepository.save (account), он изменит данные в базе данных (accountFromDB)?
Да, если вы сохраните учетную запись, она будет фактически вставлена в тестовую базу данных.
это настоящий тест?
Да, это так. Этот тип теста называется интеграционным тестом . Другой тип теста, который я бы порекомендовал вам изучить - это юнит-тест. Хорошее объяснение модульных тестов можно найти здесь .
результат теста:
Ваш тест не был выполнен правильно, вы получаетеисключение. В вашей трассировке стека говорится, что вы где-то пытаетесь получить account.banks, но пропускаете сеанс. Чтобы исправить это, вы должны поставить @Transactional в свой метод тестирования.
@Test
@Transactional
public void contextLoads() {
....
Честно говоря, я даже не знаю, что мне нужно тестировать в этом методе. Поэтому я попытался проверить учетную запись NullPointer с базы данных.
При тестировании всегда следует задавать себе вопрос, что я пытаюсь проверить? В этом тесте вы пытаетесь проверить метод, который добавляет деньги на счет. Итак, первое, что я хотел бы проверить, это то, что учетная запись возвращается после выполнения метода (учетная запись не равна нулю). После этого я бы проверил, что баланс счета увеличивается точно на сумму, которую вы положили в метод addMoneyToBalance. Существует также еще одна вещь, которая должна быть проверена в другом тесте. И это тот случай, когда вы добавляете деньги на несуществующий аккаунт. В этом тесте вы должны утверждать, что выдается AccountNotFoundException.