İyi soru. İronik bir şekilde, bir test seansı sırasında dün SpringOne Platformunda yükselmişti. Bu özel test notunu uygulamak için neler gerektiğini görelim. Her şeyden
TL;DR
check the code on github
Önce açıklama oluşturmak gerekir. Bu açıklama, spring-boot-test-autoconfigure
modülünden bazı bitleri yeniden kullanır. Bellek içi veritabanını (DataJpaTest
gibi) otomatik olarak yapılandırmak isteyebilirsiniz. Ayrıca önbelleğe alma işleminin varsayılan olarak yapılandırıldığından ve devre dışı bırakıldığından emin olmak istersiniz (Spring Boot uygulamanızda @EnableCaching
varsa). Ayrıca, tüm testlerin varsayılan olarak @Transactional
olmasını istiyorsunuz, böylece bunu eklemelisiniz.
Sonraki, etkin olarak devreye dilimleme. Bu noktada ihtiyacınız olan bir DataSource
bir JdbcTemplate
, veritabanı göçler (göç yolu/liquibase) ve @Transactional
işlemek için bir işlem yöneticisi olduğunu istiyorum. Aşağıdaki eklemek gerekir sende tekme diğer oto-yapılandırmaları kaçınmak için:
@OverrideAutoConfiguration(enabled = false)
Sonra açıkça yukarıdaki otomatik yapılandırmaları etkin olmasını istiyorum. Bunu yapmak için, size @ImportAutoConfiguration
ekleyin ve spring.factories
anahtar sizin ek açıklamanın FQN uymalıdır META-INF/spring.factories
# AutoConfigureDataJpa auto-configuration imports
com.example.test.autoconfigure.jdbc.DataJdbcTest=\
org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\
org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
aşağıdaki içerik ekleyin. Spring Boot ek özellikler olmadan @ImportAutoConfiguration
'u bulduğunda, spring.factories
'da ek açıklama türüyle eşleşen bir anahtar arar.
Ardından, bir filtre ile ek bileşenler (bileşen taraması) ekleyebilmeniz gerekir. Bunu yapabilmek için,'u DataJdbcTypeExcludeFilter
'un DataJpaTypeExcludeFilter
ile aynı şey olduğu gibi ekleyebilirsiniz (bu yüzden bunun için ortak bir sınıf çıkarmak isteyebiliriz). Eğer, sadece ek açıklama eklemek gerekir yaptık ve JdbcTemplate
mükemmel cevap için size
@RunWith(SpringRunner.class)
@DataJdbcTest
public class DataJdbcSampleTests {
@Autowired
private JdbcTemplate jdbcTemplate;
...
}
teşekkür için otomatik olarak yapılandırılır sonra
! Ayrıca, ben oturumda soru yükseltti arkadaşım;) – checketts
Bu harika! Yardım ettiğine sevindim. –
Ayrıca bakınız [# 6563] (https://github.com/spring-projects/spring-boot/issues/6563) –