2016-08-03 15 views

cevap

14

İ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;DRcheck 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; 

    ... 
} 
+3

teşekkür için otomatik olarak yapılandırılır sonra

! Ayrıca, ben oturumda soru yükseltti arkadaşım;) – checketts

+0

Bu harika! Yardım ettiğine sevindim. –

+0

Ayrıca bakınız [# 6563] (https://github.com/spring-projects/spring-boot/issues/6563) –

İlgili konular