你好,亲爱的爪哇战士! ?如果您在这里,那么是时候开始测试并证明您的代码比营销人员承诺的效果更好。今天我们将讨论使用 H2 数据库在 Spring 中测试逻辑。我们走吧! ?
为什么我们需要H2?
想象一下:您正在编写最酷的服务,但您担心您的业务逻辑生活在一个幻想的世界中。您不希望测试驱动真实的数据库,因为:
- 很慢。
- 这是有风险的(意外删除某些内容?我们不是那样的!)。
- 这太现实了,H2就是我们的矩阵,一切尽在掌握。
H2是您的好友代码:
设置 application.properties:让 H2 为您完成工作
在开始之前,让我们准备一下我们舒适的测试小世界。为此,我们将在 src/test/resources/application.properties 中编写必要的设置。瞧:
1 2 3 4 5 6 7 8 9 | # Подключаем H2
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver- class -name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
# Убедимся, что Hibernate всё за нас делает
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
|
登录后复制
登录后复制
这一切意味着什么?
spring.datasource.url: 表示我们要使用“内存”数据库(mem:testdb),一旦我们关闭测试,该数据库就会消失。
DB_CLOSE_DELAY=-1:数据库将一直存在到 JVM 结束(稳定性万岁!)。
spring.jpa.hibernate.ddl-auto=create-drop:我们在运行测试时创建一个数据库,然后删除它。清洁是成功的关键。
添加依赖项
对于 Maven
1 2 3 4 | <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
|
登录后复制
登录后复制
对于 Gradle
1 | implementation 'com.h2database:h2'
|
登录后复制
设置测试
现在让我们编写测试。我们开启 Spring、注释的魔力以及对代码的一点热爱。
示例:添加用户
假设我们有一个 User 实体:
1 2 3 4 5 6 7 8 9 | # Подключаем H2
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver- class -name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
# Убедимся, что Hibernate всё за нас делает
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
|
登录后复制
登录后复制
测试添加用户
1 2 3 4 | <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
|
登录后复制
登录后复制
这是怎么回事?
@SpringBootTest:提升 Spring 上下文(一切都像在生产中一样,但安全)。
@Autowired:依赖注入,因为我们应得的。
UserRepository:您的存储库就像在战斗中一样工作。
结果
现在您知道如何在 Spring、H2 和测试之间建立友谊。这些示例是您进入一个没有错误并且测试一次就能起作用的世界的钥匙。不要忘记:测试不会让你的代码变得更好,但它们确实可以帮助你安然入睡。祝你好运! ?
以上是Spring 中的 H 有趣测试的详细内容。更多信息请关注PHP中文网其他相关文章!