【问题标题】:How to test LocalContainerEntityManagerFactoryBean using Spock如何使用 Spock 测试 LocalContainerEntityManagerFactoryBean
【发布时间】:2019-04-22 12:36:05
【问题描述】:

如何使用 spock 测试我的数据库连接?我知道如何使用JUnit 和测试通过来做到这一点,但是当我尝试使用Spock 做类似的事情时,我得到NullPointerException 并且无法在空对象上调用方法getDataSource()

@SpringBootTest
@ContextConfiguration(classes = DatabaseConfig.class)
@WebAppConfiguration
class DatabaseConfigTest extends Specification {

    @Autowired
    LocalContainerEntityManagerFactoryBean entityManagerFactoryBean;

    def "Should connect to database."() {
        when:
        entityManagerFactoryBean.getDataSource().getConnection()
        then:
        notThrown(SQLException.class)
    }
}

如何使用Spock测试DB连接,我负责数据库配置的班级是DatabaseConfig.class

【问题讨论】:

  • 你添加了spock-spring 依赖吗?除了@SpringBootTest,您不需要其他注释。

标签: java spring spock


【解决方案1】:

这应该会给你你正在寻找的东西。删除 ContextConfiguration 和 WebAppConiguration 注释。直接注入DataSource。

@SpringBootTest
class DatabaseConfigTest extends Specification {

    @Autowired
    DataSource dataSource;

    def "Should connect to database."() {
        when:
        dataSource.getConnection()
        then:
        notThrown(SQLException.class)
    }
}

【讨论】:

  • 我不想测试dataSource方法,我想测试LocalContainerEntityManager,它包含所有关于datasource和jpaProperties的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多