首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用弹簧引导运行r2dbc测试

无法使用弹簧引导运行r2dbc测试
EN

Stack Overflow用户
提问于 2020-06-09 01:14:18
回答 1查看 5.1K关注 0票数 2

我遵循链接来使用spring数据实现R2DBC。那个项目有巨大的POM,因为它也演示了其他特性。因此,我尝试只需要H2的spring和H2的依赖项。

我的目标是:

代码语言:javascript
复制
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <!--For testing-->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.199</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- junit 5 -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <scope>test</scope>
        </dependency>

        <!--For reactive-->
        <dependency>
            <groupId>io.r2dbc</groupId>
            <artifactId>r2dbc-h2</artifactId>
            <version>0.8.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-r2dbc</artifactId>
            <version>1.0.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-core</artifactId>
        </dependency>
        <!---->
<dependencies>      

然后,我将存储库定义为:

代码语言:javascript
复制
public interface ReactiveFeatureRepository extends ReactiveCrudRepository<Feature, UUID> {
}

Feature是实体类。

我在src/test/ application.properties中配置了application.properties:

代码语言:javascript
复制
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=sa

在试验中:

代码语言:javascript
复制
@ExtendWith(SpringExtension.class)
@SpringBootTest
public class ReactiveFeatureRepositoryTest {

    @Autowired
    ReactiveFeatureRepository rfr;

    @Autowired
    DatabaseClient client;

    @Autowired
    H2ConnectionFactory factory;
...
...
}

但是,当我尝试运行测试时,我会得到大量的日志,其中列出了“占位匹配”和“负面匹配”,最后是:

代码语言:javascript
复制
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 
'x.y.z.ReactiveFeatureRepositoryTest': Unsatisfied dependency expressed 
through field 'rfr'; nested exception is 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 
'x.y.z.ReactiveFeatureRepository' available: expected at least 1 bean which 
qualifies as autowire candidate. Dependency annotations: 
{@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at 

与样例项目相比,我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-09-15 09:29:04

对于Spring R2dbc,db连接配置前缀是spring.r2dbc。

检查我在这里的例子

如果类路径中有H2 R2dbc驱动程序,则可以忽略H2/R2dbc配置。

这里有一个测试仓库的例子 for H2。

对于其他数据库支持和使用TestContainers编写测试代码,请检查这个储存库中的其他r2dbc示例。

Update:有一个新的R2dbc示例项目,它演示SpringBoot2.4+/SpringDataR2dbc/Spring5.3 R2dbc模块中的R2dbc功能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62273512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档