java在micronaut中为集成测试配置数据库
我正试图用micronaut编写一个集成测试
我有一个控制器类:
@Controller("/hello")
public class HelloController {
@Inject
private HelloRepository helloRepository;
@Get("/")
public HttpResponse get() {
return HttpResponse.ok(helloRepository.findAll());
}
}
我正在尝试为它编写一个集成测试,比如:
@MicronautTest
public class HelloControllerSpec {
@Inject
EmbeddedServer embeddedServer;
@BeforeEach
void setUp() {
initMocks(this);
}
@Test
public void testIndex() throws Exception {
try(RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL())) {
client.toBlocking().exchange("/hello").status();
}
}
}
但我一直在犯错误:
No backing RepositoryOperations configured for repository. Check your configuration and try again
我的申请。我放在“src/test/java/resources/”下的yml文件具有以下数据源实现:
datasources:
default:
url: jdbc:h2:mem:devDb
driverClassName: org.h2.Driver
username: sa
password: 'sa'
schema-generate: CREATE_DROP
dialect: H2
jpa:
default:
packages-to-scan:
- 'com.myproject.project'
properties:
hibernate:
hbm2ddl:
auto: update
show_sql: true
我也在我的构建中包含了这一点。格雷德尔锉刀
runtime 'com.h2database:h2'
有什么办法解决这个问题吗
编辑:这是我的存储库类
@Repository
public interface HelloRepository extends CrudRepository<BufferConditionEntity, Long> {}
# 1 楼答案
对
如何做到这一点的细节将取决于对你的项目有更多的了解。 您没有显示足够的信息来了解问题所在,因此我将您的代码粘贴到一个项目中,这表明您问题中的代码似乎有效。唯一不清楚的是
initMocks
方法的作用见https://github.com/jeffbrown/rajshreerairepository上的项目
https://github.com/jeffbrown/rajshreerairepository/blob/4abe71d7a4ac9ae3cbcdb164f4d2c58249e29106/src/main/java/com/myproject/project/HelloController.java
https://github.com/jeffbrown/rajshreerairepository/blob/4abe71d7a4ac9ae3cbcdb164f4d2c58249e29106/src/test/java/com/myproject/project/HelloControllerTest.java
https://github.com/jeffbrown/rajshreerairepository/blob/87898caad4699436c60c84b85058d29885e7ec9f/src/main/java/com/myproject/project/HelloRepository.java
https://github.com/jeffbrown/rajshreerairepository/blob/87898caad4699436c60c84b85058d29885e7ec9f/src/main/resources/application.yml
那项测试通过了