2017-01-08 22 views
1

私はここのガイドに従っていましたhttps://spring.io/guides/gs/spring-boot/ - プロジェクトをクローンし、Gradleでビルドして実行しようとしました。それから私は私の要件ごとにいくつかのファイル構造を変更し、そこに与えられたユニットテストケースを実行しようとしましたが、このエラーを取得 -JUnitテストファイルから@SpringBootApplicationを見つけることができません

@SpringBootConfigurationを見つけることができません

、あなたが@ContextConfigurationまたは@SpringBootTest(クラスを使用する必要があります= ...)テスト

と私はそこにコードを再構築し、これが私の現在のプロジェクト構造である -

/projectroot 
    - /src/main/java 
      -Application.java 
      -/controller 
       -MyController.java 
      -/util 
       -MyUtil.java 
      -/model 
       -MyModel.java 

今すぐ

からテストケースを実行しようとしています

/src/test/java/controller/MyControllerTest.java

私はこのStack Overflow linkを経て、私は/ srcに/メイン/ javaの下の私のテストフォルダを置く場合/それが動作することができることを理解しています。しかし、私が行うと、テストファイルはコンパイルされず、アプリケーションコードをテストコードとともに置くのは正しい方法ではないようです。私は何か非常に基本的なものが欠けていることを知っ

答えて

1

あなたのテストをセットアップする方法(スプリングブートコンテキスト全体を使用)は、MyControllerTest.javaは最大でもApplication.javaと同じレベルである必要があります。

/projectroot 
    - /src/main/java/com/example/project/ 
      -Application.java 
      -/controller 
       -MyController.java 
      -/util 
       -MyUtil.java 
      -/model 
       -MyModel.java 
    - /src/test/java/com/example/project/ 
      -MyControllerTest.java 

Spring's documentation

どのように春:すべてのあなたの豆は下記のお春ブーツメインクラスになるように、また、私はApplication.javaデフォルトのパッケージを使用している気づく、あなたは、パッケージにそれを移動する必要がありますブートのコンテキストはテストから解決されました

検索アルゴリズムは、 @SpringBootApplicationまたは@SpringBootConfiguration 注釈付きクラスが見つかるまで、テスト を取得します。分かりやすい形でコードを構造化しておけば、通常はメイン設定が見つかる。春ブーツでデフォルトのパッケージを使用してについて

クラスは、 に「デフォルト・パッケージ」にあると考えられているパッケージ宣言が含まれていません。 「デフォルトパッケージ」の使用は一般的には避けてください。 ですので、避けてください。 @ComponentScan、 @EntityScanまたは@SpringBootApplication注釈を使用するSpringブートアプリケーションでは、特定の原因が発生する可能性があります。すべてのjarのすべてのクラス が読み込まれるためです。

Javaの推奨パッケージ命名規則に従い、逆のドメイン名(例:com.example.project)を使用することをお勧めします。

+0

ありがとう、これは私の問題を修正しました。あなたは命の恩人です:)。 – boolean

関連する問題