【问题标题】:DataBase Testing By using Autowire in Integration Testing在集成测试中使用 Autowire 进行数据库测试
【发布时间】:2020-01-03 03:21:57
【问题描述】:

我是数据库测试的新手,我正在尝试通过在类级别使用标签 @SpringBootTest 并使用 Autowire 来连接数据库,它不会创建始终为空的实例化

@SprintBootTest
 Class  Test{
@Autowire
     DatabaseService databaseService;

}

有人可以建议吗?如果有人做过类似的事情,请给我指示

【问题讨论】:

  • 我们需要更多关于您的应用程序是如何设置的信息,以及所涉及的类/接口是哪些包:测试、应用程序DatabaseService 以及如果是单独的实现。

标签: java spring-boot cucumber integration-testing autowired


【解决方案1】:

有多种方法可以测试您的数据库,这里是其中的几种,

使用内存数据库(例如:H2)使用 test 范围

使用 h2(in-memory-DB) 来模拟数据库非常好。虽然这不是强制性的,我们也可以使用mockito 来模拟数据库交互。

添加这些依赖,

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.196</version>
    <scope>test</scope>
</dependency>

现在你的测试类应该是这样的,

@RunWith(SpringRunner.class)
@SpringBootTest(classes = YourApp.class, webEnvironment = RANDOM_PORT)
Class  DatabaseServiceTest{

    @Autowired
    private DatabaseService databaseService;
}

复制实际的数据库配置属性

首先,您需要将您的 properties/yml 从 main/resources 复制到 test/resources 目录。您的测试类与上述方法中给出的相同。但请确保您从 pom 中排除了 h2-dependency

也请浏览这些教程

【讨论】:

  • 感谢您的建议。我将属性从 main/resources 复制到 test/resources 但在加载应用程序失败之后。
  • 没有看到 error trace - 建议您HARD,因为可能有多种原因!请考虑放置您的错误跟踪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2013-06-15
  • 2013-06-07
  • 2019-09-06
相关资源
最近更新 更多