2016-09-01 8 views
2

@DataJpaTestアノテーションでテストを作成しました。 HSQLDBが設定されているが、私はエラーを取得しています:プロジェクトで@DataJpaTestを使用しているときにJdbcTemplateが設定されていません

No qualifying bean of type [org.springframework.jdbc.core.JdbcTemplate] 

私はJPAリポジトリとJdbcTemplatesを使用しています。実際のOracle DB構成を使用しているときはうまくいきます。 JdbcTemplateが自動的に設定されないのはなぜですか?この問題を解決するにはどうすればよいですか?

@RunWith(SpringRunner.class) 
@SpringBootTest(classes = {MyApplication.class}) 
@DataJpaTest 
public class IntegrationTest 

依存性:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-thymeleaf</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-tomcat</artifactId> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.el</groupId> 
    <artifactId>javax.el-api</artifactId> 
    <version>2.2.4</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-devtools</artifactId> 
    <optional>true</optional> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-jpa</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-jdbc</artifactId> 
</dependency> 
<dependency> 
    <groupId>args4j</groupId> 
    <artifactId>args4j</artifactId> 
    <version>2.33</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-remote-shell</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-test</artifactId> 
    <scope>test</scope> 
</dependency> 

<dependency> 
    <groupId>commons-lang</groupId> 
    <artifactId>commons-lang</artifactId> 
    <version>2.6</version> 
</dependency> 

<dependency> 
    <groupId>oracle</groupId> 
    <artifactId>ojdbc6</artifactId> 
    <version>11.2.0.3.0</version> 
</dependency> 

<dependency> 
    <groupId>com.netflix.hystrix</groupId> 
    <artifactId>hystrix-core</artifactId> 
    <version>1.4.18</version> 
</dependency> 
<dependency> 
    <groupId>org.perf4j</groupId> 
    <artifactId>perf4j</artifactId> 
    <version>0.9.16</version> 
</dependency> 
<dependency> 
    <groupId>io.reactivex</groupId> 
    <artifactId>rxjava</artifactId> 
    <version>1.0.13</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-jdbc</artifactId> 
    <version>4.2.3.RELEASE</version> 
</dependency> 

プロパティ:

spring.jpa.database=ORACLE 
spring.jpa.show-sql=false 
spring.jpa.hibernate.ddl-auto=validate 

spring.datasource.driverClassName=oracle.jdbc.OracleDriver 
spring.datasource.url=.. 
spring.datasource.username=.. 
spring.datasource.password=.. 

spring.datasource.max-active=20 
spring.datasource.max-idle=5 
spring.datasource.min-idle=1 
spring.datasource.initial-size=5 


spring.datasource.testWhileIdle = true 
spring.datasource.timeBetweenEvictionRunsMillis = 20000 
#spring.datasource.test-on-borrow=true 
spring.datasource.validation-query=select 1 from dual; 

spring.jpa.properties.hibernate.order_inserts=true 
spring.jpa.properties.hibernate.order_updates=true 
spring.jpa.properties.hibernate.jdbc.batch_size=100 
spring.jpa.properties.hibernate.cache.use_second_level_cache=false 
+0

パッケージをスコーププロパティファイルには、Oracleが含まれています。設定を貼り付けることはできますか? – abaghel

+0

私が含まれているプロパティは、標準モードで使用されます。私は他の特性もありません。 @DataJpaTestがメモリDBの設定を処理していると仮定しています。今のところ私はテスト用に1つのプロパティだけを上書きしました:sp​​ring.jpa.hibernate.ddl-auto = none – mrh

+0

Hmmm。完全なエラーログを表示できますか? – abaghel

答えて

3

これは、現時点で構成されていません。私はalready answered how to create your own sliceを持っており、私は最近a blog post about itと書いています。

JdbcTemplateDataJpaTestで構成されている特別な理由はありません。その注釈の主な使用例は、JPAデータレイヤーをテストすることです。あなたがしたら、あなたはおそらくJdbcTemplateを使用するはずではありませんが、私はあなたのテストでそのデータベースや何かを変更することが好きかもしれないことを理解していますか?

私はあなたのリクエストを追跡するために#6802を作成しました。更新のためにそこに従ってください。

+0

もう1つのユースケースがあります:JdbcTemplateを使用するDAOクラスをテストします。これはJPAテストではありませんが、JdbcTemplate DAOテストでもメモリ内データベースの自動設定は非常に便利です。 –

0

私は単にテストにこのファイルを追加することによって、私の問題を解決することができましたが、

@Configuration 
public class TestConfig { 
    @Bean 
    public JdbcTemplate getJdbcTemplate(DataSource dataSource) { 
     return new JdbcTemplate(dataSource); 
    } 
} 
関連する問題