Я разрабатываю приложение для весенней загрузки в kotlin с помощью Intellij, используя springMVC и тимелеаф. Достаточно просто, и все работает нормально, пока я не попробую запустить несколько тестов. И тесты даже не связаны. Фактически, простого создания экземпляра теста, кажется, достаточно, чтобы свести тимелеф с ума. Он выбрасывает тысячи строк исключений.
Я создал репозиторий git с минимальной настройкой проекта, который воспроизводит проблему здесь: https://github.com/TheNewBob/kotlin-test-thymeleaf
вот мой "тест" в двух вариантах:
Обычный JUnit:
class ContentServiceTest {
@Test
fun test() {
}
}
Работает нормально, вывод консоли в Intellij:
Connected to the target VM, address: '127.0.0.1:45773', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:45773', transport: 'socket'
Process finished with exit code 0
Но когда я перехожу на Kotlintest:
class ContentServiceTest :StringSpec()
Начинается погром:
13:24:24.904 [main] DEBUG org.reflections.Reflections - could not scan file org/thymeleaf/dtd/standard/xhtml1-strict.dtd in url file:/home/benedict/.gradle/caches/modules-2/files-2.1/org.thymeleaf/thymeleaf/2.1.6.RELEASE/c362b4ecbeddc86a0cb7e767a88ce27e9c8147e6/thymeleaf-2.1.6.RELEASE.jar with scanner TypeAnnotationsScanner
org.reflections.ReflectionsException: could not create class object from file org/thymeleaf/dtd/standard/xhtml1-strict.dtd
at org.reflections.scanners.AbstractScanner.scan(AbstractScanner.java:32)
at org.reflections.Reflections.scan(Reflections.java:253)
at org.reflections.Reflections.scan(Reflections.java:202)
at org.reflections.Reflections.<init>(Reflections.java:123)
at org.reflections.Reflections.<init>(Reflections.java:168)
at io.kotlintest.Project.discoverProjectConfig(Project.kt:15)
at io.kotlintest.Project.<init>(Project.kt:27)
at io.kotlintest.Project.<clinit>(Project.kt:8)
at io.kotlintest.KTestJUnitRunner.<init>(KTestJUnitRunner.kt:10)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.reflections.ReflectionsException: could not create class file from xhtml1-strict.dtd
at org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:102)
at org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:24)
at org.reflections.scanners.AbstractScanner.scan(AbstractScanner.java:30)
... 22 common frames omitted
Caused by: java.io.IOException: bad magic number: 3c212d2d
at javassist.bytecode.ClassFile.read(ClassFile.java:825)
at javassist.bytecode.ClassFile.<init>(ClassFile.java:154)
at org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:100)
... 24 common frames omitted
Эта ошибка возникает снова и снова. Я перенастроил буфер терминала на 10 000 строк, но вывод все еще не подходит.
Однако я заметил, что тест gradlew работает без проблем, поэтому Intellij IDEA, похоже, тоже играет в этом роль.
Это, по сути, моя головоломка: в этом задействованы пружинный ботинок, тимелист, котлинтест и IDEA. Удалите любой из них, и это не проблема. Я понятия не имею, что является основным виновником, иначе я мог бы просто отправить отчет о проблеме в соответствующем месте.
Кто-нибудь когда-нибудь сталкивался с этой проблемой раньше или подозревает, в чем проблема?
Обновитесь до KotlinTest 3.0.6, и ваши проблемы, вероятно, исчезнут.
К сожалению, нет, но это, безусловно, хорошо, я протестировал его, прежде чем сообщить о проблеме команде kotlintest. Jetbrains считает, что проблема, скорее всего, здесь: youtrack.jetbrains.com/issue/KT-23971




Если кто-то столкнется с подобной проблемой, обновление до 3.1.0 или 3.0.0 решит вашу проблему. См. https://github.com/kotlintest/kotlintest/issues/314
Сообщите об ошибке на youtrack.jetbrains.com/issues/KT.