Spring Boot 1.4ではいくつかの優れたテストが改善されています。 1つは@DataJpaTest
アノテーションで、JPAテストに必要な部分だけを配線します。 JdbcTemplate
テストに必要な部品を結線するだけで、どのような外観になるのでしょうか?JdbcTemplateコードをテストしたい場合は、@DataJpaTestに相当するものは何ですか?
@DataJpaTest
を模倣した独自の合成アノテーションを作成しても問題ありません。
Spring Boot 1.4ではいくつかの優れたテストが改善されています。 1つは@DataJpaTest
アノテーションで、JPAテストに必要な部分だけを配線します。 JdbcTemplate
テストに必要な部品を結線するだけで、どのような外観になるのでしょうか?JdbcTemplateコードをテストしたい場合は、@DataJpaTestに相当するものは何ですか?
@DataJpaTest
を模倣した独自の合成アノテーションを作成しても問題ありません。
皮肉なことに、SpringOne Platformで昨日のテストトークで昨日育ったのです。このような専用のテストアノテーションを実装するために必要なことを見てみましょう。
アノテーションを作成する必要がまず第一。この注釈は、spring-boot-test-autoconfigure
モジュールの一部のビットを再利用します。メモリ内のデータベースを自動設定することができます(DataJpaTest
のように)。また、キャッシングがデフォルトで設定され、無効になっていることを確認する必要があります(Springブートアプリケーションに@EnableCaching
がある場合)。また、すべてのテストがデフォルトで@Transactional
であることが必要です。追加する必要があります。
次に、あなたは効果的でキックスライス。あなたはこの時点で必要なのはDataSource
、JdbcTemplate
、データベースの移行(フライウェイ/ 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;
...
}
感謝のために自動設定したら
!また、私はセッションで質問を提起した仲間です;) – checketts
それは素晴らしいです!私はそれが助けてうれしいです。 –
も参照してください[#6563](https://github.com/spring-projects/spring-boot/issues/6563) –