[解決済み】JpaTestを行う際に@SpringBootConfigurationを見つけることができない
質問
フレームワーク初心者(合格したばかり)で、Spring Bootを使うのは初めてです。
CrudRepositoriesが本当に機能しているかどうかを確認するために、簡単なJunitテストを実行しようとしているのです。
というエラーが出続けています。
SpringBootConfigurationが見つからないので、@ContextConfigurationまたは@SpringBootTest(classes=...)をテストに使用する必要があります。 java.lang.IllegalStateException
Spring Bootは自分で設定しないのですか?
私のテストクラス
@RunWith(SpringRunner.class)
@DataJpaTest
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class JpaTest {
@Autowired
private AccountRepository repository;
@After
public void clearDb(){
repository.deleteAll();
}
@Test
public void createAccount(){
long id = 12;
Account u = new Account(id,"Tim Viz");
repository.save(u);
assertEquals(repository.findOne(id),u);
}
@Test
public void findAccountByUsername(){
long id = 12;
String username = "Tim Viz";
Account u = new Account(id,username);
repository.save(u);
assertEquals(repository.findByUsername(username),u);
}
私のSpring Bootアプリケーションのスターターです。
@SpringBootApplication
@EnableJpaRepositories(basePackages = {"domain.repositories"})
@ComponentScan(basePackages = {"controllers","domain"})
@EnableWebMvc
@PropertySources(value {@PropertySource("classpath:application.properties")})
@EntityScan(basePackages={"domain"})
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
私のリポジトリ
public interface AccountRepository extends CrudRepository<Account,Long> {
public Account findByUsername(String username);
}
}
解決方法は?
確かに、Spring Bootは、ほとんどの場合、自分でセットアップします。投稿されたコードの多く、特に
Application
.
すべてのクラスのパッケージ名、せめて
Application
と
JpaTest
. についてですが
@DataJpaTest
といくつかの他のアノテーションを探すことです。
@SpringBootConfiguration
アノテーションが見つからない場合は、パッケージの階層をたどって見つけます。
たとえば、テストクラスの完全修飾名が
com.example.test.JpaTest
で、あなたのアプリケーション用のものは
com.example.Application
であれば、テストクラスは
@SpringBootApplication
(そして、そこで
@SpringBootConfiguration
).
しかし、アプリケーションがパッケージ階層の別のブランチに存在する場合、たとえば
com.example.application.Application
であれば、それは
ではなく
を見つけることができます。
使用例
次のようなMavenプロジェクトを考えてみましょう。
my-test-project
+--pom.xml
+--src
+--main
+--com
+--example
+--Application.java
+--test
+--com
+--example
+--test
+--JpaTest.java
そして、以下の内容を
Application.java
:
package com.example;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
のコンテンツが続きます。
JpaTest.java
:
package com.example.test;
@RunWith(SpringRunner.class)
@DataJpaTest
public class JpaTest {
@Test
public void testDummy() {
}
}
すべてうまくいっているはずです。の中に新しいフォルダーを作ると
src/main/com/example
という
app
を、そしてあなたの
Application.java
を更新してください。
package
の宣言がある場合、テストを実行すると、以下のようなエラーが発生します。
java.lang.IllegalStateException: SpringBootConfigurationが見つからないので、@ContextConfigurationか@SpringBootTest(classes=...)をテストに使用する必要があります。
関連
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] init-paramとcontext-param
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み] IntegerからBigIntegerへの変換
-
[解決済み] Javaコンパイラーエラー:ステートメントではありません
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Mavenが実行するJUnitテストを見つけ出せない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] Javaでのスキャナが動作しない
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] 午前0時からの時間を秒単位で取得する方法
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました
-
[解決済み] Java: getInstanceとStaticの比較