Сликовое юнит-тестирование - дублированные выписки в логах

У меня есть набор тестов на скользкое состояние в среде playframework, но когда они выполняются, операторы дублируются в журналах, и кажется, что они дублируются столько раз, сколько тестов. Поэтому, если у меня есть только один тест, у меня есть один, например, оператор вставки и выбора, но с немногими у меня возникает такая ситуация:

[info] c.z.h.HikariDataSource - HikariCP pool db is starting.
[info] c.z.h.HikariDataSource - HikariCP pool db is starting.
[info] a.e.s.Slf4jLogger - Slf4jLogger started
[info] c.z.h.HikariDataSource - HikariCP pool db is starting.
[info] c.z.h.HikariDataSource - HikariCP pool db is starting.
[info] a.e.s.Slf4jLogger - Slf4jLogger started
[info] a.e.s.Slf4jLogger - Slf4jLogger started
[debug] s.j.J.statement - Preparing insert statement (returning: ID): insert into `USER` (`EMAIL`,`PASSWORD`,`ACTIVATION_TOKEN`,`ACTIVATED`,`CREATED`)  values (?,?,?,?,?)
[debug] s.j.J.statement - Preparing insert statement (returning: ID): insert into `USER` (`EMAIL`,`PASSWORD`,`ACTIVATION_TOKEN`,`ACTIVATED`,`CREATED`)  values (?,?,?,?,?)
[debug] s.j.J.statement - Preparing statement: select `ACTIVATION_TOKEN`, `PASSWORD`, `ACTIVATED`, `CREATED`, `EMAIL`, `ID` from `USER` where `EMAIL` = 'test@example.com' limit 1
[debug] s.j.J.statement - Preparing statement: select `ACTIVATION_TOKEN`, `PASSWORD`, `ACTIVATED`, `CREATED`, `EMAIL`, `ID` from `USER` where `EMAIL` = 'test@example.com' limit 1
[info] c.z.h.p.HikariPool - HikariCP pool db is shutting down.
[info] c.z.h.p.HikariPool - HikariCP pool db is shutting down.
[info] c.z.h.HikariDataSource - HikariCP pool db is starting.
[info] c.z.h.HikariDataSource - HikariCP pool db is starting.
[info] c.z.h.p.HikariPool - HikariCP pool db is shutting down.
[info] c.z.h.p.HikariPool - HikariCP pool db is shutting down.

В состоянии базы данных результаты выглядят корректно - избыточных операторов нет, меня интересуют только эти журналы. Сообщение "Slf4jLogger запущено" 10 раз, поэтому оно не из-за параллельного выполнения тестов. Количество дубликатов - до количества тестов (в настоящее время 4), они размещаются последовательно, поэтому никакие другие операторы из другого параллельного выполнения между ними. Код единицы:

class UserSpec extends PlaySpecification {

    val userRepo = Injector.inject[UserRepo]

    import scala.concurrent.ExecutionContext.Implicits.global

    def fakeApp: FakeApplication = {
      FakeApplication(additionalConfiguration =
        Map(
          "slick.dbs.default.driver" -> "slick.driver.H2Driver$",
          "slick.dbs.default.db.driver" -> "org.h2.Driver",
          "slick.dbs.default.db.url" -> "jdbc:h2:mem:test;MODE=MySQL;DATABASE_TO_UPPER=FALSE"
        ))}

    "User" should {
      "be created as not activated" in new WithApplication(fakeApp) {
        val email = "test@example.com"
        val action = userRepo.create(email, "Password")
            .flatMap(_ => userRepo.findByEmail(email))

        val result = Await.result(action, Duration.Inf)
        result must not(beNone)
        result.map {
          case User(id, email2, _, _, activated, _) => {
            activated must beFalse
            email2 must beEqualTo(email)
          }
        }
      }

      "cannot be create if same email" in new WithApplication(fakeApp) {
        val email = "test2@example.com"
        val action = userRepo.create(email, "Password")
          .flatMap(_ => userRepo.create(email, "Password"))

        val result = Await.result(action, Duration.Inf)
        result must beNone
      }
// rest omitted
}

0 ответов

Другие вопросы по тегам