После обновления с Micronaut 1.3.2 до 1.3.4 наши модульные тесты, включающие слой jdb c, случайно завершаются с ошибкой:
io.micronaut.transaction.exceptions.NoTransactionException: Текущей транзакции нет. Рассмотрите возможность объявления @Transactional для окружающего метода
Сбой примерно 50% времени
Исключение происходит в этом блоке кода
@PostConstruct
@Transactional
private fun init() {
liquibase = Liquibase(
"db/liquibase-changelog.xml",
ClassLoaderResourceAccessor(),
JdbcConnection(dataSource.getConnection())
)
}
в этом классе
@Singleton
open class TestUtils {
@Inject
@field:Client("/")
lateinit var client: HttpClient
@Inject
lateinit var objectMapper: ObjectMapper
@field:Property(name = "micronaut.application.name")
lateinit var applicationName: String
@field:Property(name = "micronaut.application.version")
lateinit var applicationVersion: String
@field:Property(name = "testing.security.access-token")
lateinit var accessToken: String
@Inject
lateinit var dataSource: DataSource
private var liquibase: Liquibase? = null
@PostConstruct
@Transactional
private fun init() {
liquibase = Liquibase(
"db/liquibase-changelog.xml",
ClassLoaderResourceAccessor(),
JdbcConnection(dataSource.getConnection())
)
}
fun tearDownDatabase(){
liquibase?.dropAll()
}
fun setUpDatabase(){
liquibase?.update("")
}
}