【问题标题】:How to mock a Datasource spring bean in class test如何在类测试中模拟数据源 spring bean
【发布时间】:2018-09-26 15:52:01
【问题描述】:

我想测试一个注入了数据源 bean 的类,但我不知道如何模拟 Bean 数据源(我没有类但只有 bean 配置)。 我的课是这样的:

public class Configurazione {
    private DataSource dataSource;

    public DataSource getDataSource() {
       return dataSource;
    }

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }
    ...
 }

我的豆子:

<bean id="Configurazione" class="com.company.configurazione.Configurazione">
    <property name="dataSource" ref="dataSourceMySql" />
</bean>
<bean name="dataSourceMySql"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="..." />
    <property name="username" value="..." />
    <property name="password" value="..." />
</bean>

如何使用 mockito 测试类 Configurazione 并注入数据源 bean? 我在测试类 Configurazione 中没有 @mock 的类 DataSource。

【问题讨论】:

    标签: java spring junit mockito


    【解决方案1】:

    通常出于测试目的,会创建额外的 Spring 应用程序上下文。你可以在那里以不同的方式定义 bean。例如,您可以使用内存 HSQL 数据库作为数据源

      <jdbc:embedded-database id="dataSource" type="HSQL" >
        <jdbc:script location="scripts/ddl/sequences/*"/>
        <jdbc:script location="scripts/ddl/tables/*"/>
        <jdbc:script location="scripts/dml/*"/>
     </jdbc:embedded-database>
    

    要按原样使用这个 sn-p 代码,您需要将 hsql 依赖项添加到您的项目并调整脚本的路径(这些脚本创建并填充测试中使用的数据库模式)。 然后您使用该测试应用程序上下文运行您的测试

    【讨论】:

      猜你喜欢
      • 2020-01-19
      • 2011-08-21
      • 2010-11-07
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      相关资源
      最近更新 更多