当前位置: 首页 > 知识库问答 >
问题:

如何在类测试中模拟数据源spring bean

宣望
2023-03-14

我想测试一个注入数据源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>

共有1个答案

孙元明
2023-03-14

通常出于测试目的,会创建额外的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>

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

 类似资料:
  • 问题内容: 我对Spring还是很陌生,想知道如何创建使用模拟数据源的JUnit测试以及如何在其中使用JNDI上下文?当前,我的应用程序使用来自tomcat的JNDI上下文来检索连接,并通过该连接从数据库中检索数据。所以我想我需要模拟JNDI调用和数据检索。关于解决此问题的最佳方法的任何很好的指示都是很棒的!非常感谢! 问题答案: 我通常在单独的文件中定义我的JNDI依赖项,例如: 这样,在测试资

  • 我还尝试将模拟转换为文档,如下所示 但这会在代码实现内部访问MongoCollection时产生NullpointerException异常。 这两个我都试过了 null 我厌倦了用java编写相同的测试,并在其中进行泛型的转换。 有人在Kotlin有嘲弄泛型类的经验吗?

  • 在我的服务类中,我有@Autowired HttpServletRequest,并且在我的服务方法中使用相同的对象,但是对于那个服务方法测试类,我不能在我的测试方法中模拟HttpServletRequest对象,请检查下面的代码。我正在获取请求对象的空指针异常

  • 问题内容: 我正在用Java编程,而我的应用程序正在大量使用DB。因此,对我来说重要的是能够轻松测试数据库的使用情况。 什么是DB测试?对我来说,他们应该提供两个简单的要求: 验证SQL语法。 更重要的是,根据给定情况检查数据是否正确选择/更新/插入。 那么,看来我只需要一个DB。 但实际上,我不喜欢这样做,因为使用数据库进行测试几乎没有困难: “只给自己一个测试数据库,这有多难?” -嗯,在我的

  • 所以我第一次在spring boot测试时遇到了一个问题。当我执行测试时,这些值实际上被删除了。我更愿意对此进行模拟,这样这些值就不会被删除。 我的测试类:@SpringBootTest@AutoConfiguremockMVC

  • 由于一个人在单元测试和模拟之前没有经验,我使用Mockito学习了关于JUnit的初学者教程,并进行了一些实践。 现在,我需要对一些在MySQL数据库上执行基本数据库操作的类方法进行单元测试。我不想对数据库进行真正的更改。 在不访问真实数据库的情况下,是否存在验证类似方法的方法?还是我误解了单元测试和嘲笑的概念?