关于Junit测试与数据库

时间:2011-12-08 01:24:39

标签: mysql oracle junit mocking

我正在尝试在没有安装数据库的qa机器上执行junit,我们无法连接到其他机器上的数据库。 请问有没有办法在junit中模拟数据库?就像我们用hadoop测试一样。 谢谢!

4 个答案:

答案 0 :(得分:1)

尝试使用Hypersonic或Derby等本地数据库。

答案 1 :(得分:1)

实际上使用hsql在测试中可能非常有用:)

答案 2 :(得分:0)

可能不是。您可以使用非常简单的数据库,如H2而不是Oracle或MySQL。

答案 3 :(得分:0)

您的一个选择是使用h2database。只需将以下依赖项添加到您的 pom.xml

<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <version>1.4.194</version>
</dependency>
在Spring Boot项目的test文件夹下

添加 application.properties 文件。 (Spring在执行Junit测试时会首先在测试文件夹下查找属性文件)

只需将所有数据库参数替换为以下值:

spring.az.datasource.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1

spring.az.datasource.drive-class-name=org.h2.Driver

在使用@BeforeClass(Junit 5)或@BeforeAll(Junit 4)注释的测试文件中,创建一个与生产数据库相同的数据库。

@Autowired
AzDataConfiguration azData;

@Before
public void setUp() {
    jt = new JdbcTemplate(azData.azdataSource());
    jt.execute(Constant.creatAzureTable);
}

有关详情,请参阅此:https://docs.spring.io/spring/docs/1.2.x/reference/jdbc.html