@WebMvcTestテストクラスのNoSuchBeanDefinitionException

ロック:

で残りのエンドポイントをテストしたいと思いますBookRestControllerで1つのテストを記述し@WebMvcTestます。

@RunWith(SpringRunner.class)
@WebMvcTest(BookRestController.class)
public class BookRestControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private CategoryService categoryService;

    private ObjectMapper objectMapper = new ObjectMapper();

    @Test
    public void should_create_new_category_when_try_to_update() throws Exception {

        given(categoryService.getCategoryById(20L)).willReturn(null);
        Category category = new Category("Fantastyka");

        ResultActions resultActions = mockMvc.perform(put("/api/category/10")
        .contentType(MediaType.APPLICATION_JSON)
        .content(objectMapper.writeValueAsString(category)));

        resultActions.andExpect(status().isNoContent());

    }
}

リポジトリパッケージには4つのリポジトリがありますが、テストエンドポイントではそのうちの1つだけを使用しています。 ここに画像の説明を入力してください

そして、これは私の方法です BookRestController

@RestController
public class BookRestController {

    @Autowired
    private CategoryService categoryService;

  @RequestMapping(value = "/api/category/{id}", method = RequestMethod.PUT)
    public ResponseEntity<Category> updateCategory(@PathVariable Long id, @RequestBody Category category){

        return ResponseEntity
                .status(HttpStatus.NO_CONTENT)
                .body(categoryService.updateCategory(id, category));
    }
}

テストを実行するとエラーが発生する

発生原因:org.springframework.beans.factory.UnsatisfiedDependencyException:「demoApplication」という名前のBeanの作成エラー:コンストラクターパラメーター0で表現された、満たされていない依存関係。ネストされた例外はorg.springframework.beans.factory.NoSuchBeanDefinitionException:タイプ 'com.sda.spring.demo.repository.BookRepository'の適格なBeanがありません:autowire候補として適格な少なくとも1つのBeanが必要です 依存関係アノテーション:{}

どうして?BookRepositoryテストでは使用ませんどうすれば修正できますか?

完全なログ:

java.lang.IllegalStateException:ApplicationContextのロードに失敗しました

main(JUnitStarter.java:70)原因:org.springframework.beans.factory.UnsatisfiedDependencyException:「demoApplication」という名前のBeanの作成中にエラーが発生しました:コンストラクターパラメーター0を介して満たされた依存関係が満たされていません。ネストされた例外はorg.springframework.beans.factory.NoSuchBeanDefinitionException:タイプ 'com.sda.spring.demo.repository.BookRepository'の適格なBeanがありません:オートワイヤ候補として適格な少なくとも1つのBeanが必要です 依存関係の注釈:{} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:767)at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)at org。 springframework.beans.factory.support.AbstractAutowireCapableBeanFactory。DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)... 25原因:org.springframework.beans.factory.NoSuchBeanDefinitionタイプ「com.sda.spring.demo.repository.BookRepository」の適格なBeanが使用可能です:オートワイヤー候補として適格な少なくとも1つのBeanが必要です。依存関係アノテーション:{} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1646)at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1205)at org。 springframework.beans.factory.support.DefaultListableBeanFactory。

Spring Boot:v2.1.0.RELEASE

編集:それは動作します。私は私の中で見逃して@Autowire BookRepositoryDemoApplicationます...私はこのコードを削除しましたが、今では機能します

@Autowired
    private ApplicationContext applicationContext;

    private BookRepository bookRepository;

    private CategoryRepository categoryRepository;

    @Autowired
    public DemoApplication(BookRepository bookRepository, CategoryRepository categoryRepository) {
        this.bookRepository = bookRepository;
        this.categoryRepository = categoryRepository;
    }
ダレン・フォーサイス:

メインアプリケーションクラスは、定義済みのBean、またはアノテーションを介して有効にする機能をロードします。

例えば@EnableSchedling@ComponentScan@Importなど

すべてスライステストでロードされます。

詳細については、このドキュメントを参照してください。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications-testing-user-configuration

賢明な方法でコードを構造化すると、@ SpringBootApplicationクラスがデフォルトでテストの構成として使用されます。

次に、アプリケーションのメインクラスに、その機能の特定の領域に固有の構成設定を散らかさないことが重要になります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

単体テストの内部クラスとしてのSpring Boot Restcontroller(webmvctest)

分類Dev

Spring WebMvcTestがテストステップのインスタンス化でスタックする

分類Dev

@WebMvcTestで@Nestedテストを作成する際のTooManyActualInvocations例外

分類Dev

Spring Boot @ WebMvcTestテストで@MockBeansの急増を回避する

分類Dev

@WebMvcTestを使用したテストでのApplicationContext例外

分類Dev

@WebMvcTestのPOSTリクエストがpermitAll()で403を返す理由

分類Dev

春ブーツで@WebMvcTestため無効に春のセキュリティ設定クラス

分類Dev

春のセキュリティが強化された@WebMvcTestでテストJwtDecoder

分類Dev

コンストラクターを介してBeanの依存関係を注入中にNoSuchBeanDefinitionExceptionを取得する

分類Dev

Spring-Boot WebMvcTest:認証オブジェクトパラメーターを使用してコントローラーメソッドをテストする方法

分類Dev

テスト中のクラスのモッククラス

分類Dev

JUnit 4.12:utilクラスのテスト

分類Dev

テスト:AngularのspyOnHelperクラス

分類Dev

cssクラスのAngularHostBindingテスト

分類Dev

テストクラスのVTKCMakeLists.txt

分類Dev

クラステスト中のNullPointerException

分類Dev

PHPunitクラステストのgetEntityManager

分類Dev

クラスのベストプラクティスの記録

分類Dev

NoSuchBeanDefinitionExceptionを解決するために@ComponentScanによってスキャンされたクラスパスのリストを確認する方法

分類Dev

春のテスト満たされていない依存関係NoSuchBeanDefinitionException

分類Dev

JUnitテスト:NoSuchBeanDefinitionException:タイプの適格Beanがありません

分類Dev

NoSuchBeanDefinitionException: 内部クラスに該当するタイプの Bean がありません

分類Dev

スライス変異のベストプラクティス

分類Dev

assertContains()url:ベストプラクティスのテスト

分類Dev

JUnitテストクラスの失敗テスト

分類Dev

クラスのベストプラクティス

分類Dev

内部/匿名クラスのベストプラクティス

分類Dev

構成クラス-Guiceのベストプラクティス

分類Dev

Scala型クラスのベストプラクティス

Related 関連記事

  1. 1

    単体テストの内部クラスとしてのSpring Boot Restcontroller(webmvctest)

  2. 2

    Spring WebMvcTestがテストステップのインスタンス化でスタックする

  3. 3

    @WebMvcTestで@Nestedテストを作成する際のTooManyActualInvocations例外

  4. 4

    Spring Boot @ WebMvcTestテストで@MockBeansの急増を回避する

  5. 5

    @WebMvcTestを使用したテストでのApplicationContext例外

  6. 6

    @WebMvcTestのPOSTリクエストがpermitAll()で403を返す理由

  7. 7

    春ブーツで@WebMvcTestため無効に春のセキュリティ設定クラス

  8. 8

    春のセキュリティが強化された@WebMvcTestでテストJwtDecoder

  9. 9

    コンストラクターを介してBeanの依存関係を注入中にNoSuchBeanDefinitionExceptionを取得する

  10. 10

    Spring-Boot WebMvcTest:認証オブジェクトパラメーターを使用してコントローラーメソッドをテストする方法

  11. 11

    テスト中のクラスのモッククラス

  12. 12

    JUnit 4.12:utilクラスのテスト

  13. 13

    テスト:AngularのspyOnHelperクラス

  14. 14

    cssクラスのAngularHostBindingテスト

  15. 15

    テストクラスのVTKCMakeLists.txt

  16. 16

    クラステスト中のNullPointerException

  17. 17

    PHPunitクラステストのgetEntityManager

  18. 18

    クラスのベストプラクティスの記録

  19. 19

    NoSuchBeanDefinitionExceptionを解決するために@ComponentScanによってスキャンされたクラスパスのリストを確認する方法

  20. 20

    春のテスト満たされていない依存関係NoSuchBeanDefinitionException

  21. 21

    JUnitテスト:NoSuchBeanDefinitionException:タイプの適格Beanがありません

  22. 22

    NoSuchBeanDefinitionException: 内部クラスに該当するタイプの Bean がありません

  23. 23

    スライス変異のベストプラクティス

  24. 24

    assertContains()url:ベストプラクティスのテスト

  25. 25

    JUnitテストクラスの失敗テスト

  26. 26

    クラスのベストプラクティス

  27. 27

    内部/匿名クラスのベストプラクティス

  28. 28

    構成クラス-Guiceのベストプラクティス

  29. 29

    Scala型クラスのベストプラクティス

ホットタグ

アーカイブ