2016-08-03 9 views
6

Spring Boot 1.4ではいくつかの優れたテストが改善されています。 1つは@DataJpaTestアノテーションで、JPAテストに必要な部分だけを配線します。 JdbcTemplateテストに必要な部品を結線するだけで、どのような外観になるのでしょうか?JdbcTemplateコードをテストしたい場合は、@DataJpaTestに相当するものは何ですか?

@DataJpaTestを模倣した独自の合成アノテーションを作成しても問題ありません。

答えて

14

皮肉なことに、SpringOne Platformで昨日のテストトークで昨日育ったのです。このような専用のテストアノテーションを実装するために必要なことを見てみましょう。

TL;DRcheck the code on github

アノテーションを作成する必要がまず第一。この注釈は、spring-boot-test-autoconfigureモジュールの一部のビットを再利用します。メモリ内のデータベースを自動設定することができます(DataJpaTestのように)。また、キャッシングがデフォルトで設定され、無効になっていることを確認する必要があります(Springブートアプリケーションに@EnableCachingがある場合)。また、すべてのテストがデフォルトで@Transactionalであることが必要です。追加する必要があります。

次に、あなたは効果的でキックスライス。あなたはこの時点で必要なのはDataSourceJdbcTemplate、データベースの移行(フライウェイ/ LiquiBaseを)と@Transactionalを処理するトランザクション・マネージャであることを望みます。他の自動設定が実行されないようにするには、次を追加する必要があります。

@OverrideAutoConfiguration(enabled = false) 

次に、上記の自動設定を明示的に有効にします。そうするためには、あなたは@ImportAutoConfigurationを追加すると、あなたはspring.factoriesで鍵があなたの注釈のFQNと一致している必要があり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 

に以下の内容を追加します。 Spring Bootが余分な属性を持たないで@ImportAutoConfigurationを見つけると、注釈タイプに一致するキーをspring.factoriesに探します。

次に、追加のコンポーネント(コンポーネントスキャン)をフィルタに含めることができます。これを行うには、を追加することができます。DataJdbcTypeExcludeFilterは、DataJpaTypeExcludeFilterとほぼ同じものです(そのため、共通のクラスを抽出することができます)。あなたは、あなただけの注釈を追加する必要があることをやったとあなたJdbcTemplateは、優れた答えのためのあなた

@RunWith(SpringRunner.class) 
@DataJdbcTest 
public class DataJdbcSampleTests { 

    @Autowired 
    private JdbcTemplate jdbcTemplate; 

    ... 
} 
+3

感謝のために自動設定したら

!また、私はセッションで質問を提起した仲間です;) – checketts

+0

それは素晴らしいです!私はそれが助けてうれしいです。 –

+0

も参照してください[#6563](https://github.com/spring-projects/spring-boot/issues/6563) –

関連する問題