我试图理解为什么我不能自动生成一个类存储库,但我可以在同一个包中自动生成一个接口存储库,用于同一个测试。当我启动应用程序时,相同的存储库按预期工作。
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.app.person.repository.PersonRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultPersonbleBeanFactory.raiseNoMatchingBeanFound(DefaultPersonbleBeanFactory.java:1493)
at org.springframework.beans.factory.support.DefaultPersonbleBeanFactory.doResolveDependency(DefaultPersonbleBeanFactory.java:1104)
at org.springframework.beans.factory.support.DefaultPersonbleBeanFactory.resolveDependency(DefaultPersonbleBeanFactory.java:1066)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)
... 28 more
@RunWith(SpringRunner.class)
@DataJpaTest
public class PersonRepositoryTest {
@Autowired
private PersonRepository personRepository; // fail...
@Autowired
private PersonCrudRepository personCrudRepository; // works!
@Test
public void findOne() {
}
}
@Repository
public class PersonRepository {
//code
}
存储库接口:
@Repository
public interface PersonCrudRepository extends CrudRepository<Person, Long> {
}
在经历了一次同样的错误后,我试图在配置中找到一些细节,或者测试是什么导致了这个问题。另一种可能是@datajpatest
不支持类存储库。
我想我对问题的看法是对的。在Github上找到一个帖子并阅读Spring文档后:
如果要测试JPA应用程序,可以使用@datajpatest。默认情况下,它将配置内存中的嵌入式数据库,扫描@Entity类,并配置Spring Data JPA存储库。常规的@Component bean不会加载到ApplicationContext中。
我的PersonRepository
被认为是常规的@component
,因为它不是Spring Data JPA存储库(接口是)。所以,它没有加载。
这个解决方案的缺点是在运行测试时会加载所有上下文,并且会禁用测试切片。但要做好工作。
另一个选择仍然使用@datajpatest
,它包含一个@repository
过滤器注释,如下所示:
@DataJpaTest(includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Repository.class))
问题内容: 我试图理解为什么我不能自动装配类存储库,但可以自动装配 同一程序包 中的接口存储库以进行 相同的测试 。启动应用程序时,相同的存储库可以按预期工作。 一,错误: 我有一个非常简单的例子。考试: 存储库类: 存储库接口: 在经历了与此相同的错误的糟糕经历之后,我试图在我的配置中找到一些详细信息,或者测试导致此问题的原因。另一种可能性是不支持类存储库。 问题答案: 我认为我对这个问题是正确
我正试图为一个java spring项目编写一个集成测试。在代码中的某个时候,我需要检查客户。getId(),其中ID由如下注释创建:(请记住,Customer\u ID是我的自动递增主键) 我使用lombok生成getter和setter方法。我的测试数据库是H2,我使用Junit5进行测试。我面临的问题是,我无法测试getId()行为,因为当我用DataJpaTest注释测试时,它总是0。我使
我有一个Spring Boot应用程序,其中包含一个Spring数据Jpa存储库。我需要运行一个单元(或组件?)围绕此存储库进行测试。我对Spring数据Jpa没有太多经验。 这是我的测试。它非常简单,我无法通过。 这是其他相关的源代码。 和 我只是想把Jpa回购协议自动连接到测试中,但我做不到。很明显,我误解了Spring Boot工作原理的一些细微差别。但即使经过了一些教程,我也无法找出我遗漏
我试图测试一个@Controller类,其中有来自POJO的列表。我可以在另一个@RESTController类中使用@Autowired来连接控制器,但在同样的情况下,我不能将其用于测试。 user.java UserContrell3.java 在下一个类中,userresource.java我可以做@autowired 但是,在测试类UserTest.java中。我不能: 提前感谢!
我不能使用spring boot 2.1.0.M4和Junit5和测试我的spring crud存储库。我正在使用下面的spring crud存储库接口。 这是我的单元测试类 这是我的pom.xml 我只想知道成功运行测试的正确注释集是什么。我尝试使用不同的组合 如果我只是使用@datajpatest和@runwith(Springrunner.class),我会得到以下错误: 附言。只想提一下,
我想检查一堆URL是否正常工作。因此,我编写了一些代码(如下所示)来实现这一点。它适用于像谷歌这样的网站。通用域名格式。当我把它应用到我的场景中时,它失败了。 我正在登录虚拟机。从这个虚拟机,我可以在浏览器中打开所需的URL。当我尝试检查是否可以用代码连接到URL时,它失败了。我的代码从文件中获取的URL是正确的,可以在浏览器上运行。因此,排除了URL中的错误。 我的服务器URL如下所示- 如何调