Модульные тесты хорошо работают с Maven, но не запускаются при использовании их с IntelliJ - PullRequest
2 голосов
/ 31 мая 2019

У меня есть несколько модульных тестов в проекте Scala, которые работают нормально при использовании mvn clean test для их запуска (scalatest-maven-plugin version 1.0).

Однако, когда я пытаюсь использовать IntelliJ UI длязапустив их, я получаю эту ошибку:

objc[56331]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/bin/java (0x10f8774c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x1102d24e0). One of the two will be used. Which one is undefined.
java.lang.IllegalArgumentException: ERROR: -r has been deprecated for a very long time and is no longer supported, to prepare for reusing it for a different purpose in the near future. Please change all uses of -r to -C.
    at org.scalatest.tools.ArgsParser$.checkArgsForValidity(ArgsParser.scala:41)
    at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:857)
    at org.scalatest.tools.Runner$.run(Runner.scala:850)
    at org.scalatest.tools.Runner.run(Runner.scala)
    at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:131)
    at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)

Возможно, это как-то связано с зависимостью, которая у меня есть в поме.Это зависимость от артефакта, который я разработал в отдельном проекте.Если я удалю эту зависимость, эта ошибка исчезнет.

Мне нужна эта зависимость, и я не могу понять, что с ней не так.Maven работает просто отлично, но мне бы хотелось иметь доступ к отладчику в IntelliJ.

Есть предложения?У меня закончились идеи, и Google пока что не дает мне ничего полезного.

Кроме того, другие коллеги испытывают то же самое, поэтому я сомневаюсь, что это как-то связано с моей локальной конфигурацией.

Спасибо заранее!

1 Ответ

1 голос
/ 31 мая 2019

«Самая масштабная» библиотека не любит способ, которым IntelliJ вызывает ее.

Попробуйте обновить плагин Scala в IntelliJ?

UPDATE:

Я немного покопался в исходном коде IntelliJ и Scalatest (оба можно увидеть в трассировке стека, которую вы показали выше):

1) Scalatest отвергает аргумент "-r", который IntelliJ передает здесь:

https://github.com/scalatest/scalatest/blob/b97f944f4a2690744c26dc875097407baba7e21d/scalatest/src/main/scala/org/scalatest/tools/ArgsParser.scala#L41

2) Код IntelliJ, передающий аргумент "-r", находится здесь:

https://github.com/JetBrains/intellij-scala/blob/88317c1dd8a8cd6b8578adc17c1ead36a2a5a77a/scala/runners/src/org/jetbrains/plugins/scala/testingSupport/scalaTest/ScalaTestRunner.java#L131

Обратите внимание, что это не последняя версия плагина IntelliJ scala.

Интересно, что аргумент "-r" передается только в том случае, если для этого кода установлено значение isOlderScalaTestVersion true (см. Строку 94), что может быть, если обнаруженная версия ScalaTest равна 1.x (см. Строку 261)

Таким образом, мое текущее предположение (без учета случая воспроизведения) заключается в том, что что-то в вашей связанной библиотеке заставляет плагин IntelliJ Scala думать, что вы используете ScalaTest 1.x, но на самом деле вы используете ScalaTest 3.x? Есть ли у связанной библиотеки транзитивная зависимость от старого ScalaTest?

...