你好,亲爱的爪哇战士! ?如果您在这里,那么是时候开始测试并证明您的代码比营销人员承诺的效果更好。今天我们将讨论使用 H2 数据库在 Spring 中测试逻辑。我们走吧! ?
想象一下:您正在编写最酷的服务,但您担心您的业务逻辑生活在一个幻想的世界中。您不希望测试驱动真实的数据库,因为:
在开始之前,让我们准备一下我们舒适的测试小世界。为此,我们将在 src/test/resources/application.properties 中编写必要的设置。瞧:
# Подключаем 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
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency>
对于 Gradle
implementation 'com.h2database:h2'
现在让我们编写测试。我们开启 Spring、注释的魔力以及对代码的一点热爱。
假设我们有一个 User 实体:
# Подключаем 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
测试添加用户
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency>
@SpringBootTest:提升 Spring 上下文(一切都像在生产中一样,但安全)。
@Autowired:依赖注入,因为我们应得的。
UserRepository:您的存储库就像在战斗中一样工作。
现在您知道如何在 Spring、H2 和测试之间建立友谊。这些示例是您进入一个没有错误并且测试一次就能起作用的世界的钥匙。不要忘记:测试不会让你的代码变得更好,但它们确实可以帮助你安然入睡。祝你好运! ?
以上是Spring 中的 H 有趣测试的详细内容。更多信息请关注PHP中文网其他相关文章!