UnsatisfiedDependencyException:在 Junit 测试中创建名为

我正在为 Spring 数据存储库编写 junit 测试。但我无法自动装配存储库接口。如果我运行 main 方法,并且 spring 可以检测到所有存储库、服务、实体,则程序正在运行,但如果我运行测试,则会出现以下错误:

UnsatisfiedDependencyException:创建名称为“repository.BookRepositoryTest”的 bean 时出错:通过字段“bookRepository”表达的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“app.repository.BookRepository”类型的合格 bean:预计至少有 1 个符合自动装配候选资格的 bean。依赖注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

@RunWith(SpringRunner.class)

@SpringBootTest(classes={BookRepository.class})

public class BookRepositoryTest

{

    @Autowired

    private BookRepository bookRepository;

    @Test

    public void save()

    {

        Book book=new Book();

        bookRepository.save(book);

    }

}

public interface BookRepository extends JpaRepository<Book,Integer>

{

    Book findByName(String name);

}

项目结构:


src

    main

        java

            app

                entity

                    Book.java

                repository

                    BookRepository.java

                service

                    BookService.java

                App.java

        resources

            application.properties

        webapp

    test

        java

            repository

                BookRepositoryTest.java


蛊毒传说
浏览 167回答 3
3回答

芜湖不芜

问题是,您的主包和测试包不同:BookRepository是app.entity.repository且您的测试是repository。尝试将其对齐并将测试移至src/test/java/app/entity/repository.

慕码人8056858

您可以通过以下方式使用 BookRepository@EnableAutoConfiguration@ContextConfiguration(classes = {BookRepository .class})public class BookRepositoryTest{}

当年话下

我也遇到了类似的问题。我使用 @MockBean 注释注入了依赖类。@MockBeanprivate S3StorageService s3StorageService;上述解决方案对我有用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java