2017-02-06 25 views
2

DBをまったく使用しないようにSpring起動アプリケーションを構成したいと考えています。 は、だから私はJPAの自動構成クラスを除くための私のApplicationクラスを注釈を付けていますSpringBoot単体テストでApplicationクラスの@EnableAutoConfigurationアノテーションを使用しない

@SpringBootApplication 
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) 
public class Application { 

    public static void main(final String... args) { 
     run(Application.class, args); 
    } 
} 

サービスは残念ながら私のテストクラッセが注釈を無視しているようだ

スタンドアロンで実行されたとき、私はApplicationクラスを使用するが、これは、正常に動作します私のテストのために

@Slf4j 
@RunWith(SpringRunner.class) 
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 
public class SwaggerJsonExistenceTest { 
    ... 
} 

テストでは、次のエラーメッセージ

で失敗します

原因:org.springframework.beans.factory.BeanCreationException: 名前 'dataSource'を持つBeanの作成中にエラーが発生しました:initメソッドの呼び出し が失敗しました。ネストされた例外はjava.lang.IllegalStateExceptionです。 テスト用に組み込みデータベースを決定できません。埋め込まれた データベースが必要な場合は、サポートされているデータベースをクラスパスに入れてください。

更新: クラスパスにDBドライバがありません。

org.springframework.boot:スプリングブートスタータデータJPAを試験するために使用される(のGradleでtestCompileディレクティブを介して含まれている)、それはDB-使用しないように試験を構成しなければならない方法

関連自動設定ですか?

修正:データソースの自動設定がまったく行われないように、(DBが不要なので)すべてのjpaスターター依存関係を削除しました。

+0

クラスパス上にデータベースドライバがありますか?あなたはどのスプリングブートスターターを使いますか?そうした場合は、取り外してください。 db-autoconfigurationの魔法を停止します。 –

+0

@BartoszBilicki jpaスターターの依存関係をすべて削除しました。それは今、thxで動作します。私はまだ分かりませんが、なぜクラスを除外してもテストでは機能しません。 – Gernot

答えて

0

注釈には除外プロパティがあります。この場合、除外プロパティは@EnableAutoConfiguration(exclude = ...)にする必要があります。それを使用する場合は、@SpringBootTest注釈付きテストで除外を正しく実施する必要があります。

Spring Boot API - SpringBootApplication

+0

EnableAutoConfigurationアノテーションを削除して、@SpringBootApplicationのexcludeプロパティを使用しました。残念ながら、同じエラーメッセージでテストが失敗する – Gernot

+0

これは奇妙です。 'JpaRepositoriesAutoConfiguration.class'も削除してみてください。 –

+1

データベースが必要ない場合は、spring-boot-startter-data-jpa –

関連する問題