У меня есть куча вопросов относительно Spring Boot
слоя хранилища.
Мои вопросы:
- Должны ли мы даже написать модульный тест и интеграционный тест для уровня репозитория в
Spring Boot
, который не имеет никакого пользовательского кода или запроса?
- Как лучше всего написать интеграционный тест для уровня репозитория в
Spring Boot
? Я перечислил оба подхода ниже. Среди обоих подходов какой из них лучше. Есть ли лучшая практика, когда я должен следовать один за другим?
- Если ответ на мой вышеупомянутый вопрос № 1 - да, то как мне написать модульный тест для уровня хранилища в
Spring Boot
?
CurrencyRepository.java
@Repository
public interface CurrencyRepository extends CrudRepository<Currency, String> {
}
Поскольку здесь используется встроенная база данных H2, это интеграционный тест, а не модульный тест. Правильно ли мое понимание?
CurrencyRepositoryIntegrationTest.java (подход 1)
@RunWith(SpringRunner.class)
@DataJpaTest
public class CurrencyRepositoryIntegrationTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private CurrencyRepository repository;
@Test
public void testFindByName() {
entityManager.persist(new Currency("USD", "United States Dollar", 2L));
Optional<Currency> c = repository.findById("USD");
assertEquals("United States Dollar", c.get().getCcyNm());
}
}
CurrencyRepositoryIntegrationTest2.java (подход 2)
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
public class CurrencyRepositoryIntegrationTest2 {
@Autowired
private CurrencyRepository repository;
@Test
public void testFindByName() {
repository.save(new Currency("USD", "United States Dollar", 2L));
Optional<Currency> c = repository.findById("USD");
assertEquals("United States Dollar", c.get().getCcyNm());
}
}