Intellij - тимелеаф нервничает на kotlintest

Я разрабатываю приложение для весенней загрузки в 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. Удалите любой из них, и это не проблема. Я понятия не имею, что является основным виновником, иначе я мог бы просто отправить отчет о проблеме в соответствующем месте.

Кто-нибудь когда-нибудь сталкивался с этой проблемой раньше или подозревает, в чем проблема?

Сообщите об ошибке на youtrack.jetbrains.com/issues/KT.

CrazyCoder 20.04.2018 21:23

Обновитесь до KotlinTest 3.0.6, и ваши проблемы, вероятно, исчезнут.

sksamuel 24.04.2018 18:54

К сожалению, нет, но это, безусловно, хорошо, я протестировал его, прежде чем сообщить о проблеме команде kotlintest. Jetbrains считает, что проблема, скорее всего, здесь: youtrack.jetbrains.com/issue/KT-23971

UncleBob 26.04.2018 14:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
3
137
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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