在Gitlab-ci中使用Testcontainers配置PostgreSql进行单元测试
import org.testcontainers.containers.PostgreSQLContainer
import org.testcontainers.junit.jupiter.Container
import org.testcontainers.junit.jupiter.Testcontainers
// 使用JUnit 5和Testcontainers
@Testcontainers
class MyDatabaseTest {
// 定义一个Testcontainer,用于在测试过程中启动PostgreSQL容器
@Container
val postgreSQLContainer: PostgreSQLContainer<Nothing> = PostgreSQLContainer<Nothing>("postgres:12").apply {
withDatabaseName("test_db")
withUsername("test_user")
withPassword("test_password")
}
// 在所有测试执行之前,启动容器
@BeforeAll
static fun startContainer() {
postgreSQLContainer.start()
}
// 测试示例
@Test
fun testConnection() {
// 使用Testcontainer提供的数据库连接信息建立连接
val connection = DriverManager.getConnection(postgreSQLContainer.jdbcUrl, postgreSQLContainer.username, postgreSQLContainer.password)
// 执行数据库操作
val statement = connection.createStatement()
statement.executeUpdate("INSERT INTO my_table(name) VALUES ('test')")
// 断言操作成功
val resultSet = statement.executeQuery("SELECT * FROM my_table")
assertTrue(resultSet.next())
}
}
这个代码示例展示了如何在使用JUnit 5和Testcontainers库的情况下,配置并启动一个PostgreSQL容器,以便在测试中使用。代码中定义了一个PostgreSQLContainer
对象,并在所有测试之前启动了这个容器。在测试函数中,我们使用容器提供的数据库连接信息建立连接,执行一些数据库操作,并进行断言。这样的配置方法使得测试更加独立和可靠,减少了与环境配置相关的错误。
评论已关闭