Сликовое юнит-тестирование - дублированные выписки в логах
У меня есть набор тестов на скользкое состояние в среде 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
}