Package

com.dimafeng.testcontainers

munit

Permalink

package munit

Visibility
  1. Public
  2. All

Type Members

  1. trait TestContainerForAll extends TestContainersForAll

    Permalink

    Starts a single container before all tests and stops it after all tests

    Starts a single container before all tests and stops it after all tests

    Example:

    class MysqlSpec extends FunSuite with TestContainerForAll {
    
      // You need to override `containerDef` with needed container definition
      override val containerDef = MySQLContainer.Def()
    
      // To use containers in tests you need to use `withContainers` function
      test("test case name") {
        withContainers { mysqlContainer =>
          // Inside your test body you can do with your container whatever you want to
          assert(mysqlContainer.jdbcUrl.nonEmpty)
        }
      }
    }
    
    Notes:
    - If you override beforeAll() without calling super.beforeAll() your container won't start
    - If you override afterAll() without calling super.afterAll() your container won't stop
  2. trait TestContainerForEach extends TestContainersForEach

    Permalink

    Starts a single container before each test and stops it after each test

    Starts a single container before each test and stops it after each test

    Example:

    class MysqlSpec extends FunSuite with TestContainerForEach {
    
      // You need to override `containerDef` with needed container definition
      override val containerDef = MySQLContainer.Def()
    
      // To use containers in tests you need to use `withContainers` function
      test("test case name") {
        withContainers { mysqlContainer =>
          // Inside your test body you can do with your container whatever you want to
          assert(mysqlContainer.jdbcUrl.nonEmpty)
        }
      }
    }
    
    Notes:
    - If you override beforeEach() without calling super.beforeEach() your container won't start
    - If you override afterEach() without calling super.afterEach() your container won't stop
  3. trait TestContainersForAll extends TestContainersSuite

    Permalink

    Starts containers before all tests and stop then after all tests

    Starts containers before all tests and stop then after all tests

    Example:

    class ExampleSpec extends FunSuite with TestContainersForAll {
    
      // First of all, you need to declare, which containers you want to use
      override type Containers = MySQLContainer and PostgreSQLContainer
    
      // After that, you need to describe, how you want to start them,
      // In this method you can use any intermediate logic.
      // You can pass parameters between containers, for example.
      override def startContainers(): Containers = {
        val container1 = MySQLContainer.Def().start()
        val container2 = PostgreSQLContainer.Def().start()
        container1 and container2
      }
    
      // `withContainers` function supports multiple containers:
      test("test") {
        withContainers { case mysqlContainer and pgContainer =>
          // Inside your test body you can do with your containers whatever you want to
          assert(mysqlContainer.jdbcUrl.nonEmpty && pgContainer.jdbcUrl.nonEmpty)
        }
      }
    }
    
    Notes:
    - If you override beforeAll() without calling super.beforeAll() your containers won't start
    - If you override afterAll() without calling super.afterAll() your containers won't stop
  4. trait TestContainersForEach extends TestContainersSuite

    Permalink

    Starts containers before each test and stop them after each test

    Starts containers before each test and stop them after each test

    Example:

    class ExampleSpec extends FunSuite with TestContainersForEach {
    
      // First of all, you need to declare, which containers you want to use
      override type Containers = MySQLContainer and PostgreSQLContainer
    
      // After that, you need to describe, how you want to start them,
      // In this method you can use any intermediate logic.
      // You can pass parameters between containers, for example.
      override def startContainers(): Containers = {
        val container1 = MySQLContainer.Def().start()
        val container2 = PostgreSQLContainer.Def().start()
        container1 and container2
      }
    
      // `withContainers` function supports multiple containers:
      test("test") {
        withContainers { case mysqlContainer and pgContainer =>
          // Inside your test body you can do with your containers whatever you want to
          assert(mysqlContainer.jdbcUrl.nonEmpty && pgContainer.jdbcUrl.nonEmpty)
        }
      }
    }
    
    Notes:
    - If you override beforeEach() without calling super.beforeEach() your containers won't start
    - If you override afterEach() without calling super.afterEach() your containers won't stop
  5. trait TestContainersSuite extends AnyRef

    Permalink

Value Members

  1. object TestContainersSuite

    Permalink

Ungrouped