【发布时间】:2021-03-24 06:09:13
【问题描述】:
我尝试使用test container 编写一组测试。测试容器需要在测试类主体中初始化覆盖val container = PostgreSQLContainer()。我想做一组测试,这些测试将与插入数据库的准备好的测试数据一起工作。我尝试使用org.scalatest 中的beforeAll,但它在初始化容器之前执行并且有一个NPE。您能否重写代码以获取正确插入的测试数据。
class MysqlSpec extends FlatSpec with ForAllTestContainer with BeforeAndAfterAll {
override val container = MySQLContainer()
override protected def beforeAll(): Unit = {
super.beforeAll()
Class.forName(container.driverClassName)
val connection = DriverManager.getConnection(container.jdbcUrl, container.username, container.password)
// insert some records
}
"Mysql container" should "be started" in {
Class.forName(container.driverClassName)
val connection = DriverManager.getConnection(container.jdbcUrl, container.username, container.password)
val prepareStatement = connection.prepareStatement("select 1")
// check the records
}
}
【问题讨论】:
-
TestContainersScala 提供了
afterStart和beforeEnd方法,因此您可以这样做。
标签: scala scalatest testcontainers